!
function(e) {
    function t(n) {
        if (i[n]) return i[n].exports;
        var r = i[n] = {
            exports: {},
            id: n,
            loaded: !1
        };
        return e[n].call(r.exports, r, r.exports, t),
        r.loaded = !0,
        r.exports
    }
    var n = window.webpackJsonp;
    window.webpackJsonp = function(o, a) {
        for (var s, u, l = 0,
        c = []; l < o.length; l++) u = o[l],
        r[u] && c.push.apply(c, r[u]),
        r[u] = 0;
        for (s in a) e[s] = a[s];
        for (n && n(o, a); c.length;) c.shift().call(null, t);
        return a[0] ? (i[0] = 0, t(0)) : void 0
    };
    var i = {},
    r = {
        2 : 0
    };
    t.e = function(e, n) {
        if (0 === r[e]) return n.call(null, t);
        if (void 0 !== r[e]) r[e].push(n);
        else {
            r[e] = [n];
            var i = document.getElementsByTagName("head")[0],
            o = document.createElement("script");
            o.type = "text/javascript",
            o.charset = "utf-8",
            o.async = !0,
            o.src = t.p + "js/" + e + ".common.js",
            i.appendChild(o)
        }
    },
    t.m = e,
    t.c = i,
    t.p = ""
} ([, , ,
function(e, t) {
    e.exports = [{
        CMYK: [0, 0, 0, 81],
        RGB: [48, 48, 48],
        hex: "#303030",
        name: "百草霜",
        pinyin: "baicaoshuang"
    },
    {
        CMYK: [0, 1, 7, 78],
        RGB: [54, 53, 50],
        hex: "#363532",
        name: "灯草灰",
        pinyin: "dengcaohui"
    },
    {
        CMYK: [9, 6, 0, 70],
        RGB: [67, 69, 74],
        hex: "#43454a",
        name: "粗晶皂",
        pinyin: "cujingzao"
    },
    {
        CMYK: [2, 0, 1, 63],
        RGB: [90, 92, 91],
        hex: "#5a5c5b",
        name: "承德皂",
        pinyin: "chengdezao"
    },
    {
        CMYK: [0, 0, 4, 54],
        RGB: [117, 117, 112],
        hex: "#757570",
        name: "承德灰",
        pinyin: "chengdehui"
    },
    {
        CMYK: [46, 83, 0, 42],
        RGB: [78, 24, 146],
        hex: "#4e1892",
        name: "柏坊灰蓝",
        pinyin: "baifanghuilan"
    },
    {
        CMYK: [79, 64, 0, 41],
        RGB: [31, 54, 150],
        hex: "#1f3696",
        name: "宝蓝",
        pinyin: "baolan"
    },
    {
        CMYK: [73, 29, 0, 42],
        RGB: [39, 104, 147],
        hex: "#276893",
        name: "北京毛蓝",
        pinyin: "beijingmaolan"
    },
    {
        CMYK: [43, 1, 0, 40],
        RGB: [86, 149, 151],
        hex: "#569597",
        name: "碧玉石",
        pinyin: "biyushi"
    },
    {
        CMYK: [0, 58, 96, 22],
        RGB: [198, 83, 6],
        hex: "#c65306",
        name: "苍黄",
        pinyin: "canghuang"
    },
    {
        CMYK: [65, 47, 0, 58],
        RGB: [37, 56, 107],
        hex: "#25386b",
        name: "藏蓝",
        pinyin: "zanglan"
    },
    {
        CMYK: [17, 0, 27, 62],
        RGB: [78, 95, 69],
        hex: "#4e5f45",
        name: "苍绿",
        pinyin: "canglyu"
    },
    {
        CMYK: [0, 5, 61, 14],
        RGB: [219, 206, 84],
        hex: "#dbce54",
        name: "草黄",
        pinyin: "caohuang"
    },
    {
        CMYK: [0, 46, 52, 31],
        RGB: [175, 94, 83],
        hex: "#af5e53",
        name: "辰砂",
        pinyin: "chensha"
    },
    {
        CMYK: [26, 4, 0, 34],
        RGB: [123, 161, 168],
        hex: "#7ba1a8",
        name: "春蓝",
        pinyin: "chunlan"
    },
    {
        CMYK: [5, 0, 12, 6],
        RGB: [227, 239, 209],
        hex: "#e3efd1",
        name: "春绿",
        pinyin: "chunlyu"
    },
    {
        CMYK: [100, 0, 13, 56],
        RGB: [0, 110, 95],
        hex: "#006e5f",
        name: "翠绿",
        pinyin: "cuilyu"
    },
    {
        CMYK: [5, 0, 23, 54],
        RGB: [109, 115, 88],
        hex: "#6d7358",
        name: "大赤金",
        pinyin: "dachijin"
    },
    {
        CMYK: [45, 19, 0, 65],
        RGB: [48, 71, 88],
        hex: "#304758",
        name: "黛蓝",
        pinyin: "dailan"
    },
    {
        CMYK: [0, 10, 50, 15],
        RGB: [215, 193, 107],
        hex: "#d7c16b",
        name: "丹东石",
        pinyin: "dandongshi"
    },
    {
        CMYK: [11, 0, 6, 23],
        RGB: [174, 196, 183],
        hex: "#aec4b7",
        name: "淡灰绿",
        pinyin: "danhuilyu"
    },
    {
        CMYK: [83, 68, 0, 0],
        RGB: [27, 84, 242],
        hex: "#1b54f2",
        name: "靛蓝",
        pinyin: "dianlan"
    },
    {
        CMYK: [0, 63, 68, 23],
        RGB: [196, 71, 61],
        hex: "#c4473d",
        name: "蕃茄红",
        pinyin: "fanqiehong"
    },
    {
        CMYK: [0, 55, 56, 23],
        RGB: [195, 86, 85],
        hex: "#c35655",
        name: "妃红",
        pinyin: "feihong"
    },
    {
        CMYK: [0, 9, 37, 10],
        RGB: [228, 207, 142],
        hex: "#e4cf8e",
        name: "甘草黄",
        pinyin: "gancaohuang"
    },
    {
        CMYK: [0, 1, 50, 58],
        RGB: [106, 104, 52],
        hex: "#6a6834",
        name: "橄榄绿",
        pinyin: "ganlanlyu"
    },
    {
        CMYK: [0, 5, 8, 8],
        RGB: [234, 220, 214],
        hex: "#eadcd6",
        name: "甘石粉",
        pinyin: "ganshifen"
    },
    {
        CMYK: [42, 16, 0, 31],
        RGB: [100, 147, 175],
        hex: "#6493af",
        name: "钴蓝",
        pinyin: "gulan"
    },
    {
        CMYK: [21, 0, 6, 31],
        RGB: [136, 174, 163],
        hex: "#88aea3",
        name: "果灰",
        pinyin: "guohui"
    },
    {
        CMYK: [81, 36, 0, 50],
        RGB: [23, 80, 125],
        hex: "#17507d",
        name: "海蓝",
        pinyin: "hailan"
    },
    {
        CMYK: [7, 2, 0, 66],
        RGB: [79, 83, 85],
        hex: "#4f5355",
        name: "红皂",
        pinyin: "hongzao"
    },
    {
        CMYK: [3, 0, 6, 28],
        RGB: [176, 183, 172],
        hex: "#b0b7ac",
        name: "黄灰",
        pinyin: "huanghui"
    },
    {
        CMYK: [35, 18, 0, 48],
        RGB: [84, 107, 131],
        hex: "#546b83",
        name: "花青",
        pinyin: "huaqing"
    },
    {
        CMYK: [0, 1, 6, 7],
        RGB: [235, 232, 219],
        hex: "#ebe8db",
        name: "胡粉",
        pinyin: "hufen"
    },
    {
        CMYK: [32, 5, 0, 45],
        RGB: [93, 130, 138],
        hex: "#5d828a",
        name: "灰蓝",
        pinyin: "huilan"
    },
    {
        CMYK: [32, 0, 1, 46],
        RGB: [92, 137, 135],
        hex: "#5c8987",
        name: "灰绿",
        pinyin: "huilyu"
    },
    {
        CMYK: [0, 2, 17, 28],
        RGB: [182, 177, 150],
        hex: "#b6b196",
        name: "灰米",
        pinyin: "huimi"
    },
    {
        CMYK: [0, 17, 70, 29],
        RGB: [180, 148, 54],
        hex: "#b49436",
        name: "姜黄",
        pinyin: "jianghuang"
    },
    {
        CMYK: [0, 11, 32, 57],
        RGB: [109, 97, 74],
        hex: "#6d614a",
        name: "将校呢",
        pinyin: "jiangxiaoni"
    },
    {
        CMYK: [0, 31, 30, 56],
        RGB: [112, 77, 78],
        hex: "#704d4e",
        name: "绛紫",
        pinyin: "jiangzi"
    },
    {
        CMYK: [0, 54, 72, 9],
        RGB: [231, 105, 63],
        hex: "#e7693f",
        name: "桔红",
        pinyin: "jiehong"
    },
    {
        CMYK: [0, 42, 74, 9],
        RGB: [232, 133, 59],
        hex: "#e8853b",
        name: "桔黄",
        pinyin: "jiehuang"
    },
    {
        CMYK: [0, 38, 70, 21],
        RGB: [199, 122, 58],
        hex: "#c77a3a",
        name: "金黄",
        pinyin: "jinhuang"
    },
    {
        CMYK: [4, 0, 12, 16],
        RGB: [202, 212, 186],
        hex: "#cad4ba",
        name: "军绿",
        pinyin: "junlyu"
    },
    {
        CMYK: [100, 60, 0, 35],
        RGB: [0, 65, 165],
        hex: "#0041a5",
        name: "孔雀蓝",
        pinyin: "kongquelan"
    },
    {
        CMYK: [0, 9, 40, 47],
        RGB: [133, 121, 79],
        hex: "#85794f",
        name: "库金",
        pinyin: "kujin"
    },
    {
        CMYK: [0, 2, 34, 28],
        RGB: [183, 178, 120],
        hex: "#b7b278",
        name: "枯绿",
        pinyin: "kulyu"
    },
    {
        CMYK: [0, 0, 9, 9],
        RGB: [231, 229, 208],
        hex: "#e7e5d0",
        name: "蜡白",
        pinyin: "labai"
    },
    {
        CMYK: [44, 0, 24, 56],
        RGB: [61, 110, 83],
        hex: "#3d6e53",
        name: "老绿",
        pinyin: "laolyu"
    },
    {
        CMYK: [0, 64, 68, 16],
        RGB: [213, 75, 68],
        hex: "#d54b44",
        name: "榴花红",
        pinyin: "liuhuahong"
    },
    {
        CMYK: [3, 0, 18, 30],
        RGB: [169, 176, 143],
        hex: "#a9b08f",
        name: "芦灰",
        pinyin: "luhui"
    },
    {
        CMYK: [0, 65, 54, 40],
        RGB: [151, 52, 68],
        hex: "#973444",
        name: "玫瑰红",
        pinyin: "meiguihong"
    },
    {
        CMYK: [0, 49, 28, 52],
        RGB: [121, 61, 86],
        hex: "#793d56",
        name: "玫瑰灰",
        pinyin: "meiguihui"
    },
    {
        CMYK: [0, 15, 28, 11],
        RGB: [225, 189, 162],
        hex: "#e1bda2",
        name: "米红",
        pinyin: "mihong"
    },
    {
        CMYK: [0, 3, 12, 22],
        RGB: [197, 191, 173],
        hex: "#c5bfad",
        name: "米灰",
        pinyin: "mihui"
    },
    {
        CMYK: [0, 0, 10, 3],
        RGB: [245, 245, 220],
        hex: "#f5f5dc",
        name: "米色",
        pinyin: "mise"
    },
    {
        CMYK: [12, 0, 7, 21],
        RGB: [175, 200, 186],
        hex: "#afc8ba",
        name: "奶绿",
        pinyin: "nailyu"
    },
    {
        CMYK: [0, 16, 20, 24],
        RGB: [193, 162, 153],
        hex: "#c1a299",
        name: "奶棕",
        pinyin: "naizong"
    },
    {
        CMYK: [0, 6, 75, 8],
        RGB: [233, 219, 57],
        hex: "#e9db39",
        name: "柠檬黄",
        pinyin: "ningmenghuang"
    },
    {
        CMYK: [0, 88, 37, 34],
        RGB: [167, 19, 104],
        hex: "#a71368",
        name: "品红",
        pinyin: "pinhong"
    },
    {
        CMYK: [58, 35, 0, 43],
        RGB: [60, 94, 145],
        hex: "#3c5e91",
        name: "浅海昌蓝",
        pinyin: "qianhaichanglan"
    },
    {
        CMYK: [0, 24, 45, 12],
        RGB: [222, 168, 122],
        hex: "#dea87a",
        name: "浅黄棕",
        pinyin: "qianhuangzong"
    },
    {
        CMYK: [0, 31, 59, 14],
        RGB: [218, 149, 88],
        hex: "#da9558",
        name: "浅桔黄",
        pinyin: "qianjiehuang"
    },
    {
        CMYK: [0, 80, 27, 36],
        RGB: [162, 32, 118],
        hex: "#a22076",
        name: "牵牛紫",
        pinyin: "qianniuzi"
    },
    {
        CMYK: [13, 23, 0, 22],
        RGB: [171, 150, 197],
        hex: "#ab96c5",
        name: "浅石英紫",
        pinyin: "qianshiyingzi"
    },
    {
        CMYK: [3, 3, 0, 20],
        RGB: [196, 195, 203],
        hex: "#c4c3cb",
        name: "浅藤紫",
        pinyin: "qiantengzi"
    },
    {
        CMYK: [0, 13, 30, 21],
        RGB: [201, 174, 140],
        hex: "#c9ae8c",
        name: "浅驼色",
        pinyin: "qiantuose"
    },
    {
        CMYK: [0, 12, 10, 8],
        RGB: [234, 205, 209],
        hex: "#eacdd1",
        name: "浅血牙",
        pinyin: "qianxieya"
    },
    {
        CMYK: [0, 2, 8, 11],
        RGB: [225, 219, 205],
        hex: "#e1dbcd",
        name: "浅棕灰",
        pinyin: "qianzonghui"
    },
    {
        CMYK: [0, 13, 38, 16],
        RGB: [213, 184, 132],
        hex: "#d5b884",
        name: "卡其黄",
        pinyin: "kaqihuang"
    },
    {
        CMYK: [13, 0, 2, 54],
        RGB: [100, 115, 112],
        hex: "#647370",
        name: "卡其绿",
        pinyin: "kaqilyu"
    },
    {
        CMYK: [0, 29, 22, 59],
        RGB: [103, 73, 80],
        hex: "#674950",
        name: "茄皮紫",
        pinyin: "qiepizi"
    },
    {
        CMYK: [33, 16, 0, 59],
        RGB: [69, 86, 103],
        hex: "#455667",
        name: "鹊灰",
        pinyin: "quehui"
    },
    {
        CMYK: [65, 26, 0, 44],
        RGB: [49, 103, 141],
        hex: "#31678d",
        name: "绒蓝",
        pinyin: "ronglan"
    },
    {
        CMYK: [28, 0, 13, 20],
        RGB: [144, 202, 175],
        hex: "#90caaf",
        name: "三绿",
        pinyin: "sanlyu"
    },
    {
        CMYK: [100, 0, 1, 64],
        RGB: [0, 91, 90],
        hex: "#005b5a",
        name: "沙绿",
        pinyin: "shalyu"
    },
    {
        CMYK: [65, 24, 0, 50],
        RGB: [43, 94, 125],
        hex: "#2b5e7d",
        name: "沙青",
        pinyin: "shaqing"
    },
    {
        CMYK: [0, 15, 15, 64],
        RGB: [90, 76, 76],
        hex: "#5a4c4c",
        name: "深烟",
        pinyin: "shenyan"
    },
    {
        CMYK: [0, 48, 34, 60],
        RGB: [100, 52, 65],
        hex: "#643441",
        name: "深烟红",
        pinyin: "shenyanhong"
    },
    {
        CMYK: [79, 33, 0, 29],
        RGB: [37, 120, 181],
        hex: "#2578b5",
        name: "深竹月",
        pinyin: "shenzhuyue"
    },
    {
        CMYK: [0, 29, 32, 1],
        RGB: [252, 177, 170],
        hex: "#fcb1aa",
        name: "十样锦",
        pinyin: "shiyangjin"
    },
    {
        CMYK: [5, 0, 3, 38],
        RGB: [148, 156, 151],
        hex: "#949c97",
        name: "水貂灰",
        pinyin: "shuidiaohui"
    },
    {
        CMYK: [9, 0, 13, 17],
        RGB: [190, 210, 182],
        hex: "#bed2b6",
        name: "水黄",
        pinyin: "shuihuang"
    },
    {
        CMYK: [0, 8, 51, 5],
        RGB: [242, 222, 118],
        hex: "#f2de76",
        name: "藤黄",
        pinyin: "tenghuang"
    },
    {
        CMYK: [65, 0, 6, 0],
        RGB: [46, 195, 231],
        hex: "#2ec3e7",
        name: "天青*",
        pinyin: "tianqing"
    },
    {
        CMYK: [26, 9, 0, 70],
        RGB: [55, 68, 75],
        hex: "#37444b",
        name: "铁灰",
        pinyin: "tiehui"
    },
    {
        CMYK: [0, 28, 74, 19],
        RGB: [206, 147, 53],
        hex: "#ce9335",
        name: "土黄",
        pinyin: "tuhuang"
    },
    {
        CMYK: [0, 6, 16, 61],
        RGB: [98, 92, 82],
        hex: "#625c52",
        name: "相思灰",
        pinyin: "xiangsihui"
    },
    {
        CMYK: [0, 61, 75, 37],
        RGB: [160, 62, 40],
        hex: "#a03e28",
        name: "血红",
        pinyin: "xiehong"
    },
    {
        CMYK: [0, 71, 70, 23],
        RGB: [196, 55, 57],
        hex: "#c43739",
        name: "猩红",
        pinyin: "xinghong"
    },
    {
        CMYK: [0, 36, 70, 18],
        RGB: [208, 133, 61],
        hex: "#d0853d",
        name: "雄黄",
        pinyin: "xionghuang"
    },
    {
        CMYK: [0, 48, 71, 10],
        RGB: [228, 117, 66],
        hex: "#e47542",
        name: "雄精",
        pinyin: "xiongjing"
    },
    {
        CMYK: [0, 67, 67, 69],
        RGB: [77, 25, 25],
        hex: "#4d1919",
        name: "锈红",
        pinyin: "xiuhong"
    },
    {
        CMYK: [8, 0, 8, 21],
        RGB: [184, 200, 183],
        hex: "#b8c8b7",
        name: "锈绿",
        pinyin: "xiulyu"
    },
    {
        CMYK: [0, 8, 30, 52],
        RGB: [121, 111, 84],
        hex: "#796f54",
        name: "选金",
        pinyin: "xuanjin"
    },
    {
        CMYK: [0, 1, 1, 0],
        RGB: [255, 250, 250],
        hex: "#fffafa",
        name: "雪色",
        pinyin: "xuese"
    },
    {
        CMYK: [0, 40, 25, 52],
        RGB: [121, 72, 90],
        hex: "#79485a",
        name: "雪紫",
        pinyin: "xuezi"
    },
    {
        CMYK: [7, 0, 3, 10],
        RGB: [209, 227, 219],
        hex: "#d1e3db",
        name: "鸭蛋青",
        pinyin: "yadanqing"
    },
    {
        CMYK: [0, 34, 17, 38],
        RGB: [156, 102, 128],
        hex: "#9c6680",
        name: "洋葱紫",
        pinyin: "yangcongzi"
    },
    {
        CMYK: [0, 90, 72, 13],
        RGB: [220, 20, 60],
        hex: "#dc143c",
        name: "洋红",
        pinyin: "yanghong"
    },
    {
        CMYK: [0, 74, 73, 19],
        RGB: [204, 53, 54],
        hex: "#cc3536",
        name: "艳红",
        pinyin: "yanhong"
    },
    {
        CMYK: [100, 0, 37, 44],
        RGB: [0, 142, 89],
        hex: "#008e59",
        name: "鹦鹉绿",
        pinyin: "yingwulyu"
    },
    {
        CMYK: [0, 90, 70, 8],
        RGB: [221, 59, 68],
        hex: "#dd3b44",
        name: "银朱",
        pinyin: "yinzhu"
    },
    {
        CMYK: [18, 0, 12, 66],
        RGB: [69, 85, 74],
        hex: "#45554a",
        name: "油绿",
        pinyin: "youlyu"
    },
    {
        CMYK: [0, 0, 4, 75],
        RGB: [63, 63, 60],
        hex: "#3f3f3c",
        name: "油烟墨",
        pinyin: "youyanmo"
    },
    {
        CMYK: [0, 3, 1, 75],
        RGB: [62, 60, 61],
        hex: "#3e3c3d",
        name: "元青",
        pinyin: "yuanqing"
    },
    {
        CMYK: [0, 87, 70, 23],
        RGB: [192, 63, 60],
        hex: "#c03f3c",
        name: "胭脂",
        pinyin: "yanzhi"
    },
    {
        CMYK: [2, 0, 3, 64],
        RGB: [88, 90, 87],
        hex: "#585a57",
        name: "银箔",
        pinyin: "yinbo"
    },
    {
        CMYK: [0, 85, 72, 26],
        RGB: [187, 28, 51],
        hex: "#bb1c33",
        name: "月季红",
        pinyin: "yuejihong"
    },
    {
        CMYK: [38, 8, 0, 48],
        RGB: [80, 120, 131],
        hex: "#507883",
        name: "玉石蓝",
        pinyin: "yushilan"
    },
    {
        CMYK: [0, 64, 54, 46],
        RGB: [137, 48, 63],
        hex: "#89303f",
        name: "枣红",
        pinyin: "zaohong"
    },
    {
        CMYK: [0, 57, 80, 7],
        RGB: [235, 101, 45],
        hex: "#eb652d",
        name: "章丹",
        pinyin: "zhangdan"
    },
    {
        CMYK: [13, 4, 0, 33],
        RGB: [147, 162, 169],
        hex: "#93a2a9",
        name: "正灰",
        pinyin: "zhenghui"
    },
    {
        CMYK: [0, 9, 24, 14],
        RGB: [219, 199, 166],
        hex: "#dbc7a6",
        name: "枝黄",
        pinyin: "zhihuang"
    },
    {
        CMYK: [17, 2, 0, 44],
        RGB: [116, 138, 141],
        hex: "#748a8d",
        name: "织锦灰",
        pinyin: "zhijinhui"
    },
    {
        CMYK: [0, 12, 23, 26],
        RGB: [188, 165, 144],
        hex: "#bca590",
        name: "纸棕",
        pinyin: "zhizong"
    },
    {
        CMYK: [0, 10, 26, 33],
        RGB: [169, 152, 124],
        hex: "#a9987c",
        name: "中棕灰",
        pinyin: "zhongzonghui"
    },
    {
        CMYK: [0, 59, 46, 35],
        RGB: [165, 67, 88],
        hex: "#a54358",
        name: "紫粉",
        pinyin: "zifen"
    },
    {
        CMYK: [3, 18, 0, 20],
        RGB: [195, 166, 203],
        hex: "#c3a6cb",
        name: "紫水晶",
        pinyin: "zishuijing"
    },
    {
        CMYK: [10, 15, 0, 41],
        RGB: [133, 126, 149],
        hex: "#857e95",
        name: "紫藤灰",
        pinyin: "zitenghui"
    },
    {
        CMYK: [0, 30, 12, 6],
        RGB: [238, 165, 209],
        hex: "#eea5d1",
        name: "紫薇花",
        pinyin: "ziweihua"
    },
    {
        CMYK: [0, 28, 57, 27],
        RGB: [184, 132, 79],
        hex: "#b8844f",
        name: "棕茶",
        pinyin: "zongcha"
    }]
},
function(e, t, n) {
    var i, r;
    /*!
* jQuery JavaScript Library v2.2.1
* http://jquery.com/
*
* Includes Sizzle.js
* http://sizzlejs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2016-02-22T19:11Z
*/
    !
    function(t, n) {
        "object" == typeof e && "object" == typeof e.exports ? e.exports = t.document ? n(t, !0) : function(e) {
            if (!e.document) throw new Error("jQuery requires a window with a document");
            return n(e)
        }: n(t)
    } ("undefined" != typeof window ? window: this,
    function(n, o) {
        function a(e) {
            var t = !!e && "length" in e && e.length,
            n = le.type(e);
            return "function" === n || le.isWindow(e) ? !1 : "array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e
        }
        function s(e, t, n) {
            if (le.isFunction(t)) return le.grep(e,
            function(e, i) {
                return !! t.call(e, i, e) !== n
            });
            if (t.nodeType) return le.grep(e,
            function(e) {
                return e === t !== n
            });
            if ("string" == typeof t) {
                if (xe.test(t)) return le.filter(t, e, n);
                t = le.filter(t, e)
            }
            return le.grep(e,
            function(e) {
                return ie.call(t, e) > -1 !== n
            })
        }
        function u(e, t) {
            for (; (e = e[t]) && 1 !== e.nodeType;);
            return e
        }
        function l(e) {
            var t = {};
            return le.each(e.match(Me) || [],
            function(e, n) {
                t[n] = !0
            }),
            t
        }
        function c() {
            Z.removeEventListener("DOMContentLoaded", c),
            n.removeEventListener("load", c),
            le.ready()
        }
        function f() {
            this.expando = le.expando + f.uid++
        }
        function p(e, t, n) {
            var i;
            if (void 0 === n && 1 === e.nodeType) if (i = "data-" + t.replace(De, "-$&").toLowerCase(), n = e.getAttribute(i), "string" == typeof n) {
                try {
                    n = "true" === n ? !0 : "false" === n ? !1 : "null" === n ? null: +n + "" === n ? +n: Se.test(n) ? le.parseJSON(n) : n
                } catch(r) {}
                Ne.set(e, t, n)
            } else n = void 0;
            return n
        }
        function d(e, t, n, i) {
            var r, o = 1,
            a = 20,
            s = i ?
            function() {
                return i.cur()
            }: function() {
                return le.css(e, t, "")
            },
            u = s(),
            l = n && n[3] || (le.cssNumber[t] ? "": "px"),
            c = (le.cssNumber[t] || "px" !== l && +u) && Ge.exec(le.css(e, t));
            if (c && c[3] !== l) {
                l = l || c[3],
                n = n || [],
                c = +u || 1;
                do o = o || ".5",
                c /= o,
                le.style(e, t, c + l);
                while (o !== (o = s() / u) && 1 !== o && --a)
            }
            return n && (c = +c || +u || 0, r = n[1] ? c + (n[1] + 1) * n[2] : +n[2], i && (i.unit = l, i.start = c, i.end = r)),
            r
        }
        function h(e, t) {
            var n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [];
            return void 0 === t || t && le.nodeName(e, t) ? le.merge([e], n) : n
        }
        function g(e, t) {
            for (var n = 0,
            i = e.length; i > n; n++) je.set(e[n], "globalEval", !t || je.get(t[n], "globalEval"))
        }
        function m(e, t, n, i, r) {
            for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, m = e.length; m > d; d++) if (o = e[d], o || 0 === o) if ("object" === le.type(o)) le.merge(p, o.nodeType ? [o] : o);
            else if (Fe.test(o)) {
                for (a = a || f.appendChild(t.createElement("div")), s = (Le.exec(o) || ["", ""])[1].toLowerCase(), u = Oe[s] || Oe._default, a.innerHTML = u[1] + le.htmlPrefilter(o) + u[2], c = u[0]; c--;) a = a.lastChild;
                le.merge(p, a.childNodes),
                a = f.firstChild,
                a.textContent = ""
            } else p.push(t.createTextNode(o));
            for (f.textContent = "", d = 0; o = p[d++];) if (i && le.inArray(o, i) > -1) r && r.push(o);
            else if (l = le.contains(o.ownerDocument, o), a = h(f.appendChild(o), "script"), l && g(a), n) for (c = 0; o = a[c++];) He.test(o.type || "") && n.push(o);
            return f
        }
        function y() {
            return ! 0
        }
        function v() {
            return ! 1
        }
        function x() {
            try {
                return Z.activeElement
            } catch(e) {}
        }
        function b(e, t, n, i, r, o) {
            var a, s;
            if ("object" == typeof t) {
                "string" != typeof n && (i = i || n, n = void 0);
                for (s in t) b(e, s, n, i, t[s], o);
                return e
            }
            if (null == i && null == r ? (r = n, i = n = void 0) : null == r && ("string" == typeof n ? (r = i, i = void 0) : (r = i, i = n, n = void 0)), r === !1) r = v;
            else if (!r) return e;
            return 1 === o && (a = r, r = function(e) {
                return le().off(e),
                a.apply(this, arguments)
            },
            r.guid = a.guid || (a.guid = le.guid++)),
            e.each(function() {
                le.event.add(this, t, r, i, n)
            })
        }
        function C(e, t) {
            return le.nodeName(e, "table") && le.nodeName(11 !== t.nodeType ? t: t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
        }
        function w(e) {
            return e.type = (null !== e.getAttribute("type")) + "/" + e.type,
            e
        }
        function T(e) {
            var t = Xe.exec(e.type);
            return t ? e.type = t[1] : e.removeAttribute("type"),
            e
        }
        function R(e, t) {
            var n, i, r, o, a, s, u, l;
            if (1 === t.nodeType) {
                if (je.hasData(e) && (o = je.access(e), a = je.set(t, o), l = o.events)) {
                    delete a.handle,
                    a.events = {};
                    for (r in l) for (n = 0, i = l[r].length; i > n; n++) le.event.add(t, r, l[r][n])
                }
                Ne.hasData(e) && (s = Ne.access(e), u = le.extend({},
                s), Ne.set(t, u))
            }
        }
        function M(e, t) {
            var n = t.nodeName.toLowerCase();
            "input" === n && Ke.test(e.type) ? t.checked = e.checked: "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
        }
        function B(e, t, n, i) {
            t = te.apply([], t);
            var r, o, a, s, u, l, c = 0,
            f = e.length,
            p = f - 1,
            d = t[0],
            g = le.isFunction(d);
            if (g || f > 1 && "string" == typeof d && !se.checkClone && _e.test(d)) return e.each(function(r) {
                var o = e.eq(r);
                g && (t[0] = d.call(this, r, o.html())),
                B(o, t, n, i)
            });
            if (f && (r = m(t, e[0].ownerDocument, !1, e, i), o = r.firstChild, 1 === r.childNodes.length && (r = o), o || i)) {
                for (a = le.map(h(r, "script"), w), s = a.length; f > c; c++) u = r,
                c !== p && (u = le.clone(u, !0, !0), s && le.merge(a, h(u, "script"))),
                n.call(e[c], u, c);
                if (s) for (l = a[a.length - 1].ownerDocument, le.map(a, T), c = 0; s > c; c++) u = a[c],
                He.test(u.type || "") && !je.access(u, "globalEval") && le.contains(l, u) && (u.src ? le._evalUrl && le._evalUrl(u.src) : le.globalEval(u.textContent.replace(Ue, "")))
            }
            return e
        }
        function k(e, t, n) {
            for (var i, r = t ? le.filter(t, e) : e, o = 0; null != (i = r[o]); o++) n || 1 !== i.nodeType || le.cleanData(h(i)),
            i.parentNode && (n && le.contains(i.ownerDocument, i) && g(h(i, "script")), i.parentNode.removeChild(i));
            return e
        }
        function E(e, t) {
            var n = le(t.createElement(e)).appendTo(t.body),
            i = le.css(n[0], "display");
            return n.detach(),
            i
        }
        function j(e) {
            var t = Z,
            n = Je[e];
            return n || (n = E(e, t), "none" !== n && n || (Ve = (Ve || le("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement), t = Ve[0].contentDocument, t.write(), t.close(), n = E(e, t), Ve.detach()), Je[e] = n),
            n
        }
        function N(e, t, n) {
            var i, r, o, a, s = e.style;
            return n = n || et(e),
            a = n ? n.getPropertyValue(t) || n[t] : void 0,
            "" !== a && void 0 !== a || le.contains(e.ownerDocument, e) || (a = le.style(e, t)),
            n && !se.pixelMarginRight() && Ze.test(a) && Qe.test(t) && (i = s.width, r = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = i, s.minWidth = r, s.maxWidth = o),
            void 0 !== a ? a + "": a
        }
        function S(e, t) {
            return {
                get: function() {
                    return e() ? void delete this.get: (this.get = t).apply(this, arguments)
                }
            }
        }
        function D(e) {
            if (e in st) return e;
            for (var t = e[0].toUpperCase() + e.slice(1), n = at.length; n--;) if (e = at[n] + t, e in st) return e
        }
        function Y(e, t, n) {
            var i = Ge.exec(t);
            return i ? Math.max(0, i[2] - (n || 0)) + (i[3] || "px") : t
        }
        function G(e, t, n, i, r) {
            for (var o = n === (i ? "border": "content") ? 4 : "width" === t ? 1 : 0, a = 0; 4 > o; o += 2)"margin" === n && (a += le.css(e, n + qe[o], !0, r)),
            i ? ("content" === n && (a -= le.css(e, "padding" + qe[o], !0, r)), "margin" !== n && (a -= le.css(e, "border" + qe[o] + "Width", !0, r))) : (a += le.css(e, "padding" + qe[o], !0, r), "padding" !== n && (a += le.css(e, "border" + qe[o] + "Width", !0, r)));
            return a
        }
        function q(e, t, i) {
            var r = !0,
            o = "width" === t ? e.offsetWidth: e.offsetHeight,
            a = et(e),
            s = "border-box" === le.css(e, "boxSizing", !1, a);
            if (Z.msFullscreenElement && n.top !== n && e.getClientRects().length && (o = Math.round(100 * e.getBoundingClientRect()[t])), 0 >= o || null == o) {
                if (o = N(e, t, a), (0 > o || null == o) && (o = e.style[t]), Ze.test(o)) return o;
                r = s && (se.boxSizingReliable() || o === e.style[t]),
                o = parseFloat(o) || 0
            }
            return o + G(e, t, i || (s ? "border": "content"), r, a) + "px"
        }
        function A(e, t) {
            for (var n, i, r, o = [], a = 0, s = e.length; s > a; a++) i = e[a],
            i.style && (o[a] = je.get(i, "olddisplay"), n = i.style.display, t ? (o[a] || "none" !== n || (i.style.display = ""), "" === i.style.display && Ae(i) && (o[a] = je.access(i, "olddisplay", j(i.nodeName)))) : (r = Ae(i), "none" === n && r || je.set(i, "olddisplay", r ? n: le.css(i, "display"))));
            for (a = 0; s > a; a++) i = e[a],
            i.style && (t && "none" !== i.style.display && "" !== i.style.display || (i.style.display = t ? o[a] || "": "none"));
            return e
        }
        function K(e, t, n, i, r) {
            return new K.prototype.init(e, t, n, i, r)
        }
        function L() {
            return n.setTimeout(function() {
                ut = void 0
            }),
            ut = le.now()
        }
        function H(e, t) {
            var n, i = 0,
            r = {
                height: e
            };
            for (t = t ? 1 : 0; 4 > i; i += 2 - t) n = qe[i],
            r["margin" + n] = r["padding" + n] = e;
            return t && (r.opacity = r.width = e),
            r
        }
        function O(e, t, n) {
            for (var i, r = (z.tweeners[t] || []).concat(z.tweeners["*"]), o = 0, a = r.length; a > o; o++) if (i = r[o].call(n, t, e)) return i
        }
        function F(e, t, n) {
            var i, r, o, a, s, u, l, c, f = this,
            p = {},
            d = e.style,
            h = e.nodeType && Ae(e),
            g = je.get(e, "fxshow");
            n.queue || (s = le._queueHooks(e, "fx"), null == s.unqueued && (s.unqueued = 0, u = s.empty.fire, s.empty.fire = function() {
                s.unqueued || u()
            }), s.unqueued++, f.always(function() {
                f.always(function() {
                    s.unqueued--,
                    le.queue(e, "fx").length || s.empty.fire()
                })
            })),
            1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY], l = le.css(e, "display"), c = "none" === l ? je.get(e, "olddisplay") || j(e.nodeName) : l, "inline" === c && "none" === le.css(e, "float") && (d.display = "inline-block")),
            n.overflow && (d.overflow = "hidden", f.always(function() {
                d.overflow = n.overflow[0],
                d.overflowX = n.overflow[1],
                d.overflowY = n.overflow[2]
            }));
            for (i in t) if (r = t[i], ct.exec(r)) {
                if (delete t[i], o = o || "toggle" === r, r === (h ? "hide": "show")) {
                    if ("show" !== r || !g || void 0 === g[i]) continue;
                    h = !0
                }
                p[i] = g && g[i] || le.style(e, i)
            } else l = void 0;
            if (le.isEmptyObject(p))"inline" === ("none" === l ? j(e.nodeName) : l) && (d.display = l);
            else {
                g ? "hidden" in g && (h = g.hidden) : g = je.access(e, "fxshow", {}),
                o && (g.hidden = !h),
                h ? le(e).show() : f.done(function() {
                    le(e).hide()
                }),
                f.done(function() {
                    var t;
                    je.remove(e, "fxshow");
                    for (t in p) le.style(e, t, p[t])
                });
                for (i in p) a = O(h ? g[i] : 0, i, f),
                i in g || (g[i] = a.start, h && (a.end = a.start, a.start = "width" === i || "height" === i ? 1 : 0))
            }
        }
        function P(e, t) {
            var n, i, r, o, a;
            for (n in e) if (i = le.camelCase(n), r = t[i], o = e[n], le.isArray(o) && (r = o[1], o = e[n] = o[0]), n !== i && (e[i] = o, delete e[n]), a = le.cssHooks[i], a && "expand" in a) {
                o = a.expand(o),
                delete e[i];
                for (n in o) n in e || (e[n] = o[n], t[n] = r)
            } else t[i] = r
        }
        function z(e, t, n) {
            var i, r, o = 0,
            a = z.prefilters.length,
            s = le.Deferred().always(function() {
                delete u.elem
            }),
            u = function() {
                if (r) return ! 1;
                for (var t = ut || L(), n = Math.max(0, l.startTime + l.duration - t), i = n / l.duration || 0, o = 1 - i, a = 0, u = l.tweens.length; u > a; a++) l.tweens[a].run(o);
                return s.notifyWith(e, [l, o, n]),
                1 > o && u ? n: (s.resolveWith(e, [l]), !1)
            },
            l = s.promise({
                elem: e,
                props: le.extend({},
                t),
                opts: le.extend(!0, {
                    specialEasing: {},
                    easing: le.easing._default
                },
                n),
                originalProperties: t,
                originalOptions: n,
                startTime: ut || L(),
                duration: n.duration,
                tweens: [],
                createTween: function(t, n) {
                    var i = le.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
                    return l.tweens.push(i),
                    i
                },
                stop: function(t) {
                    var n = 0,
                    i = t ? l.tweens.length: 0;
                    if (r) return this;
                    for (r = !0; i > n; n++) l.tweens[n].run(1);
                    return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]),
                    this
                }
            }),
            c = l.props;
            for (P(c, l.opts.specialEasing); a > o; o++) if (i = z.prefilters[o].call(l, e, c, l.opts)) return le.isFunction(i.stop) && (le._queueHooks(l.elem, l.opts.queue).stop = le.proxy(i.stop, i)),
            i;
            return le.map(c, O, l),
            le.isFunction(l.opts.start) && l.opts.start.call(e, l),
            le.fx.timer(le.extend(u, {
                elem: e,
                anim: l,
                queue: l.opts.queue
            })),
            l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always)
        }
        function W(e) {
            return e.getAttribute && e.getAttribute("class") || ""
        }
        function I(e) {
            return function(t, n) {
                "string" != typeof t && (n = t, t = "*");
                var i, r = 0,
                o = t.toLowerCase().match(Me) || [];
                if (le.isFunction(n)) for (; i = o[r++];)"+" === i[0] ? (i = i.slice(1) || "*", (e[i] = e[i] || []).unshift(n)) : (e[i] = e[i] || []).push(n)
            }
        }
        function $(e, t, n, i) {
            function r(s) {
                var u;
                return o[s] = !0,
                le.each(e[s] || [],
                function(e, s) {
                    var l = s(t, n, i);
                    return "string" != typeof l || a || o[l] ? a ? !(u = l) : void 0 : (t.dataTypes.unshift(l), r(l), !1)
                }),
                u
            }
            var o = {},
            a = e === jt;
            return r(t.dataTypes[0]) || !o["*"] && r("*")
        }
        function _(e, t) {
            var n, i, r = le.ajaxSettings.flatOptions || {};
            for (n in t) void 0 !== t[n] && ((r[n] ? e: i || (i = {}))[n] = t[n]);
            return i && le.extend(!0, e, i),
            e
        }
        function X(e, t, n) {
            for (var i, r, o, a, s = e.contents,
            u = e.dataTypes;
            "*" === u[0];) u.shift(),
            void 0 === i && (i = e.mimeType || t.getResponseHeader("Content-Type"));
            if (i) for (r in s) if (s[r] && s[r].test(i)) {
                u.unshift(r);
                break
            }
            if (u[0] in n) o = u[0];
            else {
                for (r in n) {
                    if (!u[0] || e.converters[r + " " + u[0]]) {
                        o = r;
                        break
                    }
                    a || (a = r)
                }
                o = o || a
            }
            return o ? (o !== u[0] && u.unshift(o), n[o]) : void 0
        }
        function U(e, t, n, i) {
            var r, o, a, s, u, l = {},
            c = e.dataTypes.slice();
            if (c[1]) for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
            for (o = c.shift(); o;) if (e.responseFields[o] && (n[e.responseFields[o]] = t), !u && i && e.dataFilter && (t = e.dataFilter(t, e.dataType)), u = o, o = c.shift()) if ("*" === o) o = u;
            else if ("*" !== u && u !== o) {
                if (a = l[u + " " + o] || l["* " + o], !a) for (r in l) if (s = r.split(" "), s[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) {
                    a === !0 ? a = l[r] : l[r] !== !0 && (o = s[0], c.unshift(s[1]));
                    break
                }
                if (a !== !0) if (a && e["throws"]) t = a(t);
                else try {
                    t = a(t)
                } catch(f) {
                    return {
                        state: "parsererror",
                        error: a ? f: "No conversion from " + u + " to " + o
                    }
                }
            }
            return {
                state: "success",
                data: t
            }
        }
        function V(e, t, n, i) {
            var r;
            if (le.isArray(t)) le.each(t,
            function(t, r) {
                n || Yt.test(e) ? i(e, r) : V(e + "[" + ("object" == typeof r && null != r ? t: "") + "]", r, n, i)
            });
            else if (n || "object" !== le.type(t)) i(e, t);
            else for (r in t) V(e + "[" + r + "]", t[r], n, i)
        }
        function J(e) {
            return le.isWindow(e) ? e: 9 === e.nodeType && e.defaultView
        }
        var Q = [],
        Z = n.document,
        ee = Q.slice,
        te = Q.concat,
        ne = Q.push,
        ie = Q.indexOf,
        re = {},
        oe = re.toString,
        ae = re.hasOwnProperty,
        se = {},
        ue = "2.2.1",
        le = function(e, t) {
            return new le.fn.init(e, t)
        },
        ce = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
        fe = /^-ms-/,
        pe = /-([\da-z])/gi,
        de = function(e, t) {
            return t.toUpperCase()
        };
        le.fn = le.prototype = {
            jquery: ue,
            constructor: le,
            selector: "",
            length: 0,
            toArray: function() {
                return ee.call(this)
            },
            get: function(e) {
                return null != e ? 0 > e ? this[e + this.length] : this[e] : ee.call(this)
            },
            pushStack: function(e) {
                var t = le.merge(this.constructor(), e);
                return t.prevObject = this,
                t.context = this.context,
                t
            },
            each: function(e) {
                return le.each(this, e)
            },
            map: function(e) {
                return this.pushStack(le.map(this,
                function(t, n) {
                    return e.call(t, n, t)
                }))
            },
            slice: function() {
                return this.pushStack(ee.apply(this, arguments))
            },
            first: function() {
                return this.eq(0)
            },
            last: function() {
                return this.eq( - 1)
            },
            eq: function(e) {
                var t = this.length,
                n = +e + (0 > e ? t: 0);
                return this.pushStack(n >= 0 && t > n ? [this[n]] : [])
            },
            end: function() {
                return this.prevObject || this.constructor()
            },
            push: ne,
            sort: Q.sort,
            splice: Q.splice
        },
        le.extend = le.fn.extend = function() {
            var e, t, n, i, r, o, a = arguments[0] || {},
            s = 1,
            u = arguments.length,
            l = !1;
            for ("boolean" == typeof a && (l = a, a = arguments[s] || {},
            s++), "object" == typeof a || le.isFunction(a) || (a = {}), s === u && (a = this, s--); u > s; s++) if (null != (e = arguments[s])) for (t in e) n = a[t],
            i = e[t],
            a !== i && (l && i && (le.isPlainObject(i) || (r = le.isArray(i))) ? (r ? (r = !1, o = n && le.isArray(n) ? n: []) : o = n && le.isPlainObject(n) ? n: {},
            a[t] = le.extend(l, o, i)) : void 0 !== i && (a[t] = i));
            return a
        },
        le.extend({
            expando: "jQuery" + (ue + Math.random()).replace(/\D/g, ""),
            isReady: !0,
            error: function(e) {
                throw new Error(e)
            },
            noop: function() {},
            isFunction: function(e) {
                return "function" === le.type(e)
            },
            isArray: Array.isArray,
            isWindow: function(e) {
                return null != e && e === e.window
            },
            isNumeric: function(e) {
                var t = e && e.toString();
                return ! le.isArray(e) && t - parseFloat(t) + 1 >= 0
            },
            isPlainObject: function(e) {
                return "object" !== le.type(e) || e.nodeType || le.isWindow(e) ? !1 : !e.constructor || ae.call(e.constructor.prototype, "isPrototypeOf")
            },
            isEmptyObject: function(e) {
                var t;
                for (t in e) return ! 1;
                return ! 0
            },
            type: function(e) {
                return null == e ? e + "": "object" == typeof e || "function" == typeof e ? re[oe.call(e)] || "object": typeof e
            },
            globalEval: function(e) {
                var t, n = eval;
                e = le.trim(e),
                e && (1 === e.indexOf("use strict") ? (t = Z.createElement("script"), t.text = e, Z.head.appendChild(t).parentNode.removeChild(t)) : n(e))
            },
            camelCase: function(e) {
                return e.replace(fe, "ms-").replace(pe, de)
            },
            nodeName: function(e, t) {
                return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
            },
            each: function(e, t) {
                var n, i = 0;
                if (a(e)) for (n = e.length; n > i && t.call(e[i], i, e[i]) !== !1; i++);
                else for (i in e) if (t.call(e[i], i, e[i]) === !1) break;
                return e
            },
            trim: function(e) {
                return null == e ? "": (e + "").replace(ce, "")
            },
            makeArray: function(e, t) {
                var n = t || [];
                return null != e && (a(Object(e)) ? le.merge(n, "string" == typeof e ? [e] : e) : ne.call(n, e)),
                n
            },
            inArray: function(e, t, n) {
                return null == t ? -1 : ie.call(t, e, n)
            },
            merge: function(e, t) {
                for (var n = +t.length,
                i = 0,
                r = e.length; n > i; i++) e[r++] = t[i];
                return e.length = r,
                e
            },
            grep: function(e, t, n) {
                for (var i, r = [], o = 0, a = e.length, s = !n; a > o; o++) i = !t(e[o], o),
                i !== s && r.push(e[o]);
                return r
            },
            map: function(e, t, n) {
                var i, r, o = 0,
                s = [];
                if (a(e)) for (i = e.length; i > o; o++) r = t(e[o], o, n),
                null != r && s.push(r);
                else for (o in e) r = t(e[o], o, n),
                null != r && s.push(r);
                return te.apply([], s)
            },
            guid: 1,
            proxy: function(e, t) {
                var n, i, r;
                return "string" == typeof t && (n = e[t], t = e, e = n),
                le.isFunction(e) ? (i = ee.call(arguments, 2), r = function() {
                    return e.apply(t || this, i.concat(ee.call(arguments)))
                },
                r.guid = e.guid = e.guid || le.guid++, r) : void 0
            },
            now: Date.now,
            support: se
        }),
        "function" == typeof Symbol && (le.fn[Symbol.iterator] = Q[Symbol.iterator]),
        le.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
        function(e, t) {
            re["[object " + t + "]"] = t.toLowerCase()
        });
        var he =
        /*!
* Sizzle CSS Selector Engine v2.2.1
* http://sizzlejs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2015-10-17
*/
        function(e) {
            function t(e, t, n, i) {
                var r, o, a, s, u, l, f, d, h = t && t.ownerDocument,
                g = t ? t.nodeType: 9;
                if (n = n || [], "string" != typeof e || !e || 1 !== g && 9 !== g && 11 !== g) return n;
                if (!i && ((t ? t.ownerDocument || t: O) !== D && S(t), t = t || D, G)) {
                    if (11 !== g && (l = ye.exec(e))) if (r = l[1]) {
                        if (9 === g) {
                            if (! (a = t.getElementById(r))) return n;
                            if (a.id === r) return n.push(a),
                            n
                        } else if (h && (a = h.getElementById(r)) && L(t, a) && a.id === r) return n.push(a),
                        n
                    } else {
                        if (l[2]) return Q.apply(n, t.getElementsByTagName(e)),
                        n;
                        if ((r = l[3]) && C.getElementsByClassName && t.getElementsByClassName) return Q.apply(n, t.getElementsByClassName(r)),
                        n
                    }
                    if (C.qsa && !I[e + " "] && (!q || !q.test(e))) {
                        if (1 !== g) h = t,
                        d = e;
                        else if ("object" !== t.nodeName.toLowerCase()) {
                            for ((s = t.getAttribute("id")) ? s = s.replace(xe, "\\$&") : t.setAttribute("id", s = H), f = M(e), o = f.length, u = pe.test(s) ? "#" + s: "[id='" + s + "']"; o--;) f[o] = u + " " + p(f[o]);
                            d = f.join(","),
                            h = ve.test(e) && c(t.parentNode) || t
                        }
                        if (d) try {
                            return Q.apply(n, h.querySelectorAll(d)),
                            n
                        } catch(m) {} finally {
                            s === H && t.removeAttribute("id")
                        }
                    }
                }
                return k(e.replace(se, "$1"), t, n, i)
            }
            function n() {
                function e(n, i) {
                    return t.push(n + " ") > w.cacheLength && delete e[t.shift()],
                    e[n + " "] = i
                }
                var t = [];
                return e
            }
            function i(e) {
                return e[H] = !0,
                e
            }
            function r(e) {
                var t = D.createElement("div");
                try {
                    return !! e(t)
                } catch(n) {
                    return ! 1
                } finally {
                    t.parentNode && t.parentNode.removeChild(t),
                    t = null
                }
            }
            function o(e, t) {
                for (var n = e.split("|"), i = n.length; i--;) w.attrHandle[n[i]] = t
            }
            function a(e, t) {
                var n = t && e,
                i = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || _) - (~e.sourceIndex || _);
                if (i) return i;
                if (n) for (; n = n.nextSibling;) if (n === t) return - 1;
                return e ? 1 : -1
            }
            function s(e) {
                return function(t) {
                    var n = t.nodeName.toLowerCase();
                    return "input" === n && t.type === e
                }
            }
            function u(e) {
                return function(t) {
                    var n = t.nodeName.toLowerCase();
                    return ("input" === n || "button" === n) && t.type === e
                }
            }
            function l(e) {
                return i(function(t) {
                    return t = +t,
                    i(function(n, i) {
                        for (var r, o = e([], n.length, t), a = o.length; a--;) n[r = o[a]] && (n[r] = !(i[r] = n[r]))
                    })
                })
            }
            function c(e) {
                return e && "undefined" != typeof e.getElementsByTagName && e
            }
            function f() {}
            function p(e) {
                for (var t = 0,
                n = e.length,
                i = ""; n > t; t++) i += e[t].value;
                return i
            }
            function d(e, t, n) {
                var i = t.dir,
                r = n && "parentNode" === i,
                o = P++;
                return t.first ?
                function(t, n, o) {
                    for (; t = t[i];) if (1 === t.nodeType || r) return e(t, n, o)
                }: function(t, n, a) {
                    var s, u, l, c = [F, o];
                    if (a) {
                        for (; t = t[i];) if ((1 === t.nodeType || r) && e(t, n, a)) return ! 0
                    } else for (; t = t[i];) if (1 === t.nodeType || r) {
                        if (l = t[H] || (t[H] = {}), u = l[t.uniqueID] || (l[t.uniqueID] = {}), (s = u[i]) && s[0] === F && s[1] === o) return c[2] = s[2];
                        if (u[i] = c, c[2] = e(t, n, a)) return ! 0
                    }
                }
            }
            function h(e) {
                return e.length > 1 ?
                function(t, n, i) {
                    for (var r = e.length; r--;) if (!e[r](t, n, i)) return ! 1;
                    return ! 0
                }: e[0]
            }
            function g(e, n, i) {
                for (var r = 0,
                o = n.length; o > r; r++) t(e, n[r], i);
                return i
            }
            function m(e, t, n, i, r) {
                for (var o, a = [], s = 0, u = e.length, l = null != t; u > s; s++)(o = e[s]) && (n && !n(o, i, r) || (a.push(o), l && t.push(s)));
                return a
            }
            function y(e, t, n, r, o, a) {
                return r && !r[H] && (r = y(r)),
                o && !o[H] && (o = y(o, a)),
                i(function(i, a, s, u) {
                    var l, c, f, p = [],
                    d = [],
                    h = a.length,
                    y = i || g(t || "*", s.nodeType ? [s] : s, []),
                    v = !e || !i && t ? y: m(y, p, e, s, u),
                    x = n ? o || (i ? e: h || r) ? [] : a: v;
                    if (n && n(v, x, s, u), r) for (l = m(x, d), r(l, [], s, u), c = l.length; c--;)(f = l[c]) && (x[d[c]] = !(v[d[c]] = f));
                    if (i) {
                        if (o || e) {
                            if (o) {
                                for (l = [], c = x.length; c--;)(f = x[c]) && l.push(v[c] = f);
                                o(null, x = [], l, u)
                            }
                            for (c = x.length; c--;)(f = x[c]) && (l = o ? ee(i, f) : p[c]) > -1 && (i[l] = !(a[l] = f))
                        }
                    } else x = m(x === a ? x.splice(h, x.length) : x),
                    o ? o(null, a, x, u) : Q.apply(a, x)
                })
            }
            function v(e) {
                for (var t, n, i, r = e.length,
                o = w.relative[e[0].type], a = o || w.relative[" "], s = o ? 1 : 0, u = d(function(e) {
                    return e === t
                },
                a, !0), l = d(function(e) {
                    return ee(t, e) > -1
                },
                a, !0), c = [function(e, n, i) {
                    var r = !o && (i || n !== E) || ((t = n).nodeType ? u(e, n, i) : l(e, n, i));
                    return t = null,
                    r
                }]; r > s; s++) if (n = w.relative[e[s].type]) c = [d(h(c), n)];
                else {
                    if (n = w.filter[e[s].type].apply(null, e[s].matches), n[H]) {
                        for (i = ++s; r > i && !w.relative[e[i].type]; i++);
                        return y(s > 1 && h(c), s > 1 && p(e.slice(0, s - 1).concat({
                            value: " " === e[s - 2].type ? "*": ""
                        })).replace(se, "$1"), n, i > s && v(e.slice(s, i)), r > i && v(e = e.slice(i)), r > i && p(e))
                    }
                    c.push(n)
                }
                return h(c)
            }
            function x(e, n) {
                var r = n.length > 0,
                o = e.length > 0,
                a = function(i, a, s, u, l) {
                    var c, f, p, d = 0,
                    h = "0",
                    g = i && [],
                    y = [],
                    v = E,
                    x = i || o && w.find.TAG("*", l),
                    b = F += null == v ? 1 : Math.random() || .1,
                    C = x.length;
                    for (l && (E = a === D || a || l); h !== C && null != (c = x[h]); h++) {
                        if (o && c) {
                            for (f = 0, a || c.ownerDocument === D || (S(c), s = !G); p = e[f++];) if (p(c, a || D, s)) {
                                u.push(c);
                                break
                            }
                            l && (F = b)
                        }
                        r && ((c = !p && c) && d--, i && g.push(c))
                    }
                    if (d += h, r && h !== d) {
                        for (f = 0; p = n[f++];) p(g, y, a, s);
                        if (i) {
                            if (d > 0) for (; h--;) g[h] || y[h] || (y[h] = V.call(u));
                            y = m(y)
                        }
                        Q.apply(u, y),
                        l && !i && y.length > 0 && d + n.length > 1 && t.uniqueSort(u)
                    }
                    return l && (F = b, E = v),
                    g
                };
                return r ? i(a) : a
            }
            var b, C, w, T, R, M, B, k, E, j, N, S, D, Y, G, q, A, K, L, H = "sizzle" + 1 * new Date,
            O = e.document,
            F = 0,
            P = 0,
            z = n(),
            W = n(),
            I = n(),
            $ = function(e, t) {
                return e === t && (N = !0),
                0
            },
            _ = 1 << 31,
            X = {}.hasOwnProperty,
            U = [],
            V = U.pop,
            J = U.push,
            Q = U.push,
            Z = U.slice,
            ee = function(e, t) {
                for (var n = 0,
                i = e.length; i > n; n++) if (e[n] === t) return n;
                return - 1
            },
            te = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
            ne = "[\\x20\\t\\r\\n\\f]",
            ie = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
            re = "\\[" + ne + "*(" + ie + ")(?:" + ne + "*([*^$|!~]?=)" + ne + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + ie + "))|)" + ne + "*\\]",
            oe = ":(" + ie + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + re + ")*)|.*)\\)|)",
            ae = new RegExp(ne + "+", "g"),
            se = new RegExp("^" + ne + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ne + "+$", "g"),
            ue = new RegExp("^" + ne + "*," + ne + "*"),
            le = new RegExp("^" + ne + "*([>+~]|" + ne + ")" + ne + "*"),
            ce = new RegExp("=" + ne + "*([^\\]'\"]*?)" + ne + "*\\]", "g"),
            fe = new RegExp(oe),
            pe = new RegExp("^" + ie + "$"),
            de = {
                ID: new RegExp("^#(" + ie + ")"),
                CLASS: new RegExp("^\\.(" + ie + ")"),
                TAG: new RegExp("^(" + ie + "|[*])"),
                ATTR: new RegExp("^" + re),
                PSEUDO: new RegExp("^" + oe),
                CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ne + "*(even|odd|(([+-]|)(\\d*)n|)" + ne + "*(?:([+-]|)" + ne + "*(\\d+)|))" + ne + "*\\)|)", "i"),
                bool: new RegExp("^(?:" + te + ")$", "i"),
                needsContext: new RegExp("^" + ne + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ne + "*((?:-\\d)?\\d*)" + ne + "*\\)|)(?=[^-]|$)", "i")
            },
            he = /^(?:input|select|textarea|button)$/i,
            ge = /^h\d$/i,
            me = /^[^{]+\{\s*\[native \w/,
            ye = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
            ve = /[+~]/,
            xe = /'|\\/g,
            be = new RegExp("\\\\([\\da-f]{1,6}" + ne + "?|(" + ne + ")|.)", "ig"),
            Ce = function(e, t, n) {
                var i = "0x" + t - 65536;
                return i !== i || n ? t: 0 > i ? String.fromCharCode(i + 65536) : String.fromCharCode(i >> 10 | 55296, 1023 & i | 56320)
            },
            we = function() {
                S()
            };
            try {
                Q.apply(U = Z.call(O.childNodes), O.childNodes),
                U[O.childNodes.length].nodeType
            } catch(Te) {
                Q = {
                    apply: U.length ?
                    function(e, t) {
                        J.apply(e, Z.call(t))
                    }: function(e, t) {
                        for (var n = e.length,
                        i = 0; e[n++] = t[i++];);
                        e.length = n - 1
                    }
                }
            }
            C = t.support = {},
            R = t.isXML = function(e) {
                var t = e && (e.ownerDocument || e).documentElement;
                return t ? "HTML" !== t.nodeName: !1
            },
            S = t.setDocument = function(e) {
                var t, n, i = e ? e.ownerDocument || e: O;
                return i !== D && 9 === i.nodeType && i.documentElement ? (D = i, Y = D.documentElement, G = !R(D), (n = D.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", we, !1) : n.attachEvent && n.attachEvent("onunload", we)), C.attributes = r(function(e) {
                    return e.className = "i",
                    !e.getAttribute("className")
                }), C.getElementsByTagName = r(function(e) {
                    return e.appendChild(D.createComment("")),
                    !e.getElementsByTagName("*").length
                }), C.getElementsByClassName = me.test(D.getElementsByClassName), C.getById = r(function(e) {
                    return Y.appendChild(e).id = H,
                    !D.getElementsByName || !D.getElementsByName(H).length
                }), C.getById ? (w.find.ID = function(e, t) {
                    if ("undefined" != typeof t.getElementById && G) {
                        var n = t.getElementById(e);
                        return n ? [n] : []
                    }
                },
                w.filter.ID = function(e) {
                    var t = e.replace(be, Ce);
                    return function(e) {
                        return e.getAttribute("id") === t
                    }
                }) : (delete w.find.ID, w.filter.ID = function(e) {
                    var t = e.replace(be, Ce);
                    return function(e) {
                        var n = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id");
                        return n && n.value === t
                    }
                }), w.find.TAG = C.getElementsByTagName ?
                function(e, t) {
                    return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : C.qsa ? t.querySelectorAll(e) : void 0
                }: function(e, t) {
                    var n, i = [],
                    r = 0,
                    o = t.getElementsByTagName(e);
                    if ("*" === e) {
                        for (; n = o[r++];) 1 === n.nodeType && i.push(n);
                        return i
                    }
                    return o
                },
                w.find.CLASS = C.getElementsByClassName &&
                function(e, t) {
                    return "undefined" != typeof t.getElementsByClassName && G ? t.getElementsByClassName(e) : void 0
                },
                A = [], q = [], (C.qsa = me.test(D.querySelectorAll)) && (r(function(e) {
                    Y.appendChild(e).innerHTML = "<a id='" + H + "'></a><select id='" + H + "-\r\\' msallowcapture=''><option selected=''></option></select>",
                    e.querySelectorAll("[msallowcapture^='']").length && q.push("[*^$]=" + ne + "*(?:''|\"\")"),
                    e.querySelectorAll("[selected]").length || q.push("\\[" + ne + "*(?:value|" + te + ")"),
                    e.querySelectorAll("[id~=" + H + "-]").length || q.push("~="),
                    e.querySelectorAll(":checked").length || q.push(":checked"),
                    e.querySelectorAll("a#" + H + "+*").length || q.push(".#.+[+~]")
                }), r(function(e) {
                    var t = D.createElement("input");
                    t.setAttribute("type", "hidden"),
                    e.appendChild(t).setAttribute("name", "D"),
                    e.querySelectorAll("[name=d]").length && q.push("name" + ne + "*[*^$|!~]?="),
                    e.querySelectorAll(":enabled").length || q.push(":enabled", ":disabled"),
                    e.querySelectorAll("*,:x"),
                    q.push(",.*:")
                })), (C.matchesSelector = me.test(K = Y.matches || Y.webkitMatchesSelector || Y.mozMatchesSelector || Y.oMatchesSelector || Y.msMatchesSelector)) && r(function(e) {
                    C.disconnectedMatch = K.call(e, "div"),
                    K.call(e, "[s!='']:x"),
                    A.push("!=", oe)
                }), q = q.length && new RegExp(q.join("|")), A = A.length && new RegExp(A.join("|")), t = me.test(Y.compareDocumentPosition), L = t || me.test(Y.contains) ?
                function(e, t) {
                    var n = 9 === e.nodeType ? e.documentElement: e,
                    i = t && t.parentNode;
                    return e === i || !(!i || 1 !== i.nodeType || !(n.contains ? n.contains(i) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(i)))
                }: function(e, t) {
                    if (t) for (; t = t.parentNode;) if (t === e) return ! 0;
                    return ! 1
                },
                $ = t ?
                function(e, t) {
                    if (e === t) return N = !0,
                    0;
                    var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
                    return n ? n: (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1, 1 & n || !C.sortDetached && t.compareDocumentPosition(e) === n ? e === D || e.ownerDocument === O && L(O, e) ? -1 : t === D || t.ownerDocument === O && L(O, t) ? 1 : j ? ee(j, e) - ee(j, t) : 0 : 4 & n ? -1 : 1)
                }: function(e, t) {
                    if (e === t) return N = !0,
                    0;
                    var n, i = 0,
                    r = e.parentNode,
                    o = t.parentNode,
                    s = [e],
                    u = [t];
                    if (!r || !o) return e === D ? -1 : t === D ? 1 : r ? -1 : o ? 1 : j ? ee(j, e) - ee(j, t) : 0;
                    if (r === o) return a(e, t);
                    for (n = e; n = n.parentNode;) s.unshift(n);
                    for (n = t; n = n.parentNode;) u.unshift(n);
                    for (; s[i] === u[i];) i++;
                    return i ? a(s[i], u[i]) : s[i] === O ? -1 : u[i] === O ? 1 : 0
                },
                D) : D
            },
            t.matches = function(e, n) {
                return t(e, null, null, n)
            },
            t.matchesSelector = function(e, n) {
                if ((e.ownerDocument || e) !== D && S(e), n = n.replace(ce, "='$1']"), C.matchesSelector && G && !I[n + " "] && (!A || !A.test(n)) && (!q || !q.test(n))) try {
                    var i = K.call(e, n);
                    if (i || C.disconnectedMatch || e.document && 11 !== e.document.nodeType) return i
                } catch(r) {}
                return t(n, D, null, [e]).length > 0
            },
            t.contains = function(e, t) {
                return (e.ownerDocument || e) !== D && S(e),
                L(e, t)
            },
            t.attr = function(e, t) { (e.ownerDocument || e) !== D && S(e);
                var n = w.attrHandle[t.toLowerCase()],
                i = n && X.call(w.attrHandle, t.toLowerCase()) ? n(e, t, !G) : void 0;
                return void 0 !== i ? i: C.attributes || !G ? e.getAttribute(t) : (i = e.getAttributeNode(t)) && i.specified ? i.value: null
            },
            t.error = function(e) {
                throw new Error("Syntax error, unrecognized expression: " + e)
            },
            t.uniqueSort = function(e) {
                var t, n = [],
                i = 0,
                r = 0;
                if (N = !C.detectDuplicates, j = !C.sortStable && e.slice(0), e.sort($), N) {
                    for (; t = e[r++];) t === e[r] && (i = n.push(r));
                    for (; i--;) e.splice(n[i], 1)
                }
                return j = null,
                e
            },
            T = t.getText = function(e) {
                var t, n = "",
                i = 0,
                r = e.nodeType;
                if (r) {
                    if (1 === r || 9 === r || 11 === r) {
                        if ("string" == typeof e.textContent) return e.textContent;
                        for (e = e.firstChild; e; e = e.nextSibling) n += T(e)
                    } else if (3 === r || 4 === r) return e.nodeValue
                } else for (; t = e[i++];) n += T(t);
                return n
            },
            w = t.selectors = {
                cacheLength: 50,
                createPseudo: i,
                match: de,
                attrHandle: {},
                find: {},
                relative: {
                    ">": {
                        dir: "parentNode",
                        first: !0
                    },
                    " ": {
                        dir: "parentNode"
                    },
                    "+": {
                        dir: "previousSibling",
                        first: !0
                    },
                    "~": {
                        dir: "previousSibling"
                    }
                },
                preFilter: {
                    ATTR: function(e) {
                        return e[1] = e[1].replace(be, Ce),
                        e[3] = (e[3] || e[4] || e[5] || "").replace(be, Ce),
                        "~=" === e[2] && (e[3] = " " + e[3] + " "),
                        e.slice(0, 4)
                    },
                    CHILD: function(e) {
                        return e[1] = e[1].toLowerCase(),
                        "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]),
                        e
                    },
                    PSEUDO: function(e) {
                        var t, n = !e[6] && e[2];
                        return de.CHILD.test(e[0]) ? null: (e[3] ? e[2] = e[4] || e[5] || "": n && fe.test(n) && (t = M(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
                    }
                },
                filter: {
                    TAG: function(e) {
                        var t = e.replace(be, Ce).toLowerCase();
                        return "*" === e ?
                        function() {
                            return ! 0
                        }: function(e) {
                            return e.nodeName && e.nodeName.toLowerCase() === t
                        }
                    },
                    CLASS: function(e) {
                        var t = z[e + " "];
                        return t || (t = new RegExp("(^|" + ne + ")" + e + "(" + ne + "|$)")) && z(e,
                        function(e) {
                            return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "")
                        })
                    },
                    ATTR: function(e, n, i) {
                        return function(r) {
                            var o = t.attr(r, e);
                            return null == o ? "!=" === n: n ? (o += "", "=" === n ? o === i: "!=" === n ? o !== i: "^=" === n ? i && 0 === o.indexOf(i) : "*=" === n ? i && o.indexOf(i) > -1 : "$=" === n ? i && o.slice( - i.length) === i: "~=" === n ? (" " + o.replace(ae, " ") + " ").indexOf(i) > -1 : "|=" === n ? o === i || o.slice(0, i.length + 1) === i + "-": !1) : !0
                        }
                    },
                    CHILD: function(e, t, n, i, r) {
                        var o = "nth" !== e.slice(0, 3),
                        a = "last" !== e.slice( - 4),
                        s = "of-type" === t;
                        return 1 === i && 0 === r ?
                        function(e) {
                            return !! e.parentNode
                        }: function(t, n, u) {
                            var l, c, f, p, d, h, g = o !== a ? "nextSibling": "previousSibling",
                            m = t.parentNode,
                            y = s && t.nodeName.toLowerCase(),
                            v = !u && !s,
                            x = !1;
                            if (m) {
                                if (o) {
                                    for (; g;) {
                                        for (p = t; p = p[g];) if (s ? p.nodeName.toLowerCase() === y: 1 === p.nodeType) return ! 1;
                                        h = g = "only" === e && !h && "nextSibling"
                                    }
                                    return ! 0
                                }
                                if (h = [a ? m.firstChild: m.lastChild], a && v) {
                                    for (p = m, f = p[H] || (p[H] = {}), c = f[p.uniqueID] || (f[p.uniqueID] = {}), l = c[e] || [], d = l[0] === F && l[1], x = d && l[2], p = d && m.childNodes[d]; p = ++d && p && p[g] || (x = d = 0) || h.pop();) if (1 === p.nodeType && ++x && p === t) {
                                        c[e] = [F, d, x];
                                        break
                                    }
                                } else if (v && (p = t, f = p[H] || (p[H] = {}), c = f[p.uniqueID] || (f[p.uniqueID] = {}), l = c[e] || [], d = l[0] === F && l[1], x = d), x === !1) for (; (p = ++d && p && p[g] || (x = d = 0) || h.pop()) && ((s ? p.nodeName.toLowerCase() !== y: 1 !== p.nodeType) || !++x || (v && (f = p[H] || (p[H] = {}), c = f[p.uniqueID] || (f[p.uniqueID] = {}), c[e] = [F, x]), p !== t)););
                                return x -= r,
                                x === i || x % i === 0 && x / i >= 0
                            }
                        }
                    },
                    PSEUDO: function(e, n) {
                        var r, o = w.pseudos[e] || w.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
                        return o[H] ? o(n) : o.length > 1 ? (r = [e, e, "", n], w.setFilters.hasOwnProperty(e.toLowerCase()) ? i(function(e, t) {
                            for (var i, r = o(e, n), a = r.length; a--;) i = ee(e, r[a]),
                            e[i] = !(t[i] = r[a])
                        }) : function(e) {
                            return o(e, 0, r)
                        }) : o
                    }
                },
                pseudos: {
                    not: i(function(e) {
                        var t = [],
                        n = [],
                        r = B(e.replace(se, "$1"));
                        return r[H] ? i(function(e, t, n, i) {
                            for (var o, a = r(e, null, i, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
                        }) : function(e, i, o) {
                            return t[0] = e,
                            r(t, null, o, n),
                            t[0] = null,
                            !n.pop()
                        }
                    }),
                    has: i(function(e) {
                        return function(n) {
                            return t(e, n).length > 0
                        }
                    }),
                    contains: i(function(e) {
                        return e = e.replace(be, Ce),
                        function(t) {
                            return (t.textContent || t.innerText || T(t)).indexOf(e) > -1
                        }
                    }),
                    lang: i(function(e) {
                        return pe.test(e || "") || t.error("unsupported lang: " + e),
                        e = e.replace(be, Ce).toLowerCase(),
                        function(t) {
                            var n;
                            do
                            if (n = G ? t.lang: t.getAttribute("xml:lang") || t.getAttribute("lang")) return n = n.toLowerCase(),
                            n === e || 0 === n.indexOf(e + "-");
                            while ((t = t.parentNode) && 1 === t.nodeType);
                            return ! 1
                        }
                    }),
                    target: function(t) {
                        var n = e.location && e.location.hash;
                        return n && n.slice(1) === t.id
                    },
                    root: function(e) {
                        return e === Y
                    },
                    focus: function(e) {
                        return e === D.activeElement && (!D.hasFocus || D.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
                    },
                    enabled: function(e) {
                        return e.disabled === !1
                    },
                    disabled: function(e) {
                        return e.disabled === !0
                    },
                    checked: function(e) {
                        var t = e.nodeName.toLowerCase();
                        return "input" === t && !!e.checked || "option" === t && !!e.selected
                    },
                    selected: function(e) {
                        return e.parentNode && e.parentNode.selectedIndex,
                        e.selected === !0
                    },
                    empty: function(e) {
                        for (e = e.firstChild; e; e = e.nextSibling) if (e.nodeType < 6) return ! 1;
                        return ! 0
                    },
                    parent: function(e) {
                        return ! w.pseudos.empty(e)
                    },
                    header: function(e) {
                        return ge.test(e.nodeName)
                    },
                    input: function(e) {
                        return he.test(e.nodeName)
                    },
                    button: function(e) {
                        var t = e.nodeName.toLowerCase();
                        return "input" === t && "button" === e.type || "button" === t
                    },
                    text: function(e) {
                        var t;
                        return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
                    },
                    first: l(function() {
                        return [0]
                    }),
                    last: l(function(e, t) {
                        return [t - 1]
                    }),
                    eq: l(function(e, t, n) {
                        return [0 > n ? n + t: n]
                    }),
                    even: l(function(e, t) {
                        for (var n = 0; t > n; n += 2) e.push(n);
                        return e
                    }),
                    odd: l(function(e, t) {
                        for (var n = 1; t > n; n += 2) e.push(n);
                        return e
                    }),
                    lt: l(function(e, t, n) {
                        for (var i = 0 > n ? n + t: n; --i >= 0;) e.push(i);
                        return e
                    }),
                    gt: l(function(e, t, n) {
                        for (var i = 0 > n ? n + t: n; ++i < t;) e.push(i);
                        return e
                    })
                }
            },
            w.pseudos.nth = w.pseudos.eq;
            for (b in {
                radio: !0,
                checkbox: !0,
                file: !0,
                password: !0,
                image: !0
            }) w.pseudos[b] = s(b);
            for (b in {
                submit: !0,
                reset: !0
            }) w.pseudos[b] = u(b);
            return f.prototype = w.filters = w.pseudos,
            w.setFilters = new f,
            M = t.tokenize = function(e, n) {
                var i, r, o, a, s, u, l, c = W[e + " "];
                if (c) return n ? 0 : c.slice(0);
                for (s = e, u = [], l = w.preFilter; s;) {
                    i && !(r = ue.exec(s)) || (r && (s = s.slice(r[0].length) || s), u.push(o = [])),
                    i = !1,
                    (r = le.exec(s)) && (i = r.shift(), o.push({
                        value: i,
                        type: r[0].replace(se, " ")
                    }), s = s.slice(i.length));
                    for (a in w.filter) ! (r = de[a].exec(s)) || l[a] && !(r = l[a](r)) || (i = r.shift(), o.push({
                        value: i,
                        type: a,
                        matches: r
                    }), s = s.slice(i.length));
                    if (!i) break
                }
                return n ? s.length: s ? t.error(e) : W(e, u).slice(0)
            },
            B = t.compile = function(e, t) {
                var n, i = [],
                r = [],
                o = I[e + " "];
                if (!o) {
                    for (t || (t = M(e)), n = t.length; n--;) o = v(t[n]),
                    o[H] ? i.push(o) : r.push(o);
                    o = I(e, x(r, i)),
                    o.selector = e
                }
                return o
            },
            k = t.select = function(e, t, n, i) {
                var r, o, a, s, u, l = "function" == typeof e && e,
                f = !i && M(e = l.selector || e);
                if (n = n || [], 1 === f.length) {
                    if (o = f[0] = f[0].slice(0), o.length > 2 && "ID" === (a = o[0]).type && C.getById && 9 === t.nodeType && G && w.relative[o[1].type]) {
                        if (t = (w.find.ID(a.matches[0].replace(be, Ce), t) || [])[0], !t) return n;
                        l && (t = t.parentNode),
                        e = e.slice(o.shift().value.length)
                    }
                    for (r = de.needsContext.test(e) ? 0 : o.length; r--&&(a = o[r], !w.relative[s = a.type]);) if ((u = w.find[s]) && (i = u(a.matches[0].replace(be, Ce), ve.test(o[0].type) && c(t.parentNode) || t))) {
                        if (o.splice(r, 1), e = i.length && p(o), !e) return Q.apply(n, i),
                        n;
                        break
                    }
                }
                return (l || B(e, f))(i, t, !G, n, !t || ve.test(e) && c(t.parentNode) || t),
                n
            },
            C.sortStable = H.split("").sort($).join("") === H,
            C.detectDuplicates = !!N,
            S(),
            C.sortDetached = r(function(e) {
                return 1 & e.compareDocumentPosition(D.createElement("div"))
            }),
            r(function(e) {
                return e.innerHTML = "<a href='#'></a>",
                "#" === e.firstChild.getAttribute("href")
            }) || o("type|href|height|width",
            function(e, t, n) {
                return n ? void 0 : e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
            }),
            C.attributes && r(function(e) {
                return e.innerHTML = "<input/>",
                e.firstChild.setAttribute("value", ""),
                "" === e.firstChild.getAttribute("value")
            }) || o("value",
            function(e, t, n) {
                return n || "input" !== e.nodeName.toLowerCase() ? void 0 : e.defaultValue
            }),
            r(function(e) {
                return null == e.getAttribute("disabled")
            }) || o(te,
            function(e, t, n) {
                var i;
                return n ? void 0 : e[t] === !0 ? t.toLowerCase() : (i = e.getAttributeNode(t)) && i.specified ? i.value: null
            }),
            t
        } (n);
        le.find = he,
        le.expr = he.selectors,
        le.expr[":"] = le.expr.pseudos,
        le.uniqueSort = le.unique = he.uniqueSort,
        le.text = he.getText,
        le.isXMLDoc = he.isXML,
        le.contains = he.contains;
        var ge = function(e, t, n) {
            for (var i = [], r = void 0 !== n; (e = e[t]) && 9 !== e.nodeType;) if (1 === e.nodeType) {
                if (r && le(e).is(n)) break;
                i.push(e)
            }
            return i
        },
        me = function(e, t) {
            for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
            return n
        },
        ye = le.expr.match.needsContext,
        ve = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
        xe = /^.[^:#\[\.,]*$/;
        le.filter = function(e, t, n) {
            var i = t[0];
            return n && (e = ":not(" + e + ")"),
            1 === t.length && 1 === i.nodeType ? le.find.matchesSelector(i, e) ? [i] : [] : le.find.matches(e, le.grep(t,
            function(e) {
                return 1 === e.nodeType
            }))
        },
        le.fn.extend({
            find: function(e) {
                var t, n = this.length,
                i = [],
                r = this;
                if ("string" != typeof e) return this.pushStack(le(e).filter(function() {
                    for (t = 0; n > t; t++) if (le.contains(r[t], this)) return ! 0
                }));
                for (t = 0; n > t; t++) le.find(e, r[t], i);
                return i = this.pushStack(n > 1 ? le.unique(i) : i),
                i.selector = this.selector ? this.selector + " " + e: e,
                i
            },
            filter: function(e) {
                return this.pushStack(s(this, e || [], !1))
            },
            not: function(e) {
                return this.pushStack(s(this, e || [], !0))
            },
            is: function(e) {
                return !! s(this, "string" == typeof e && ye.test(e) ? le(e) : e || [], !1).length
            }
        });
        var be, Ce = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
        we = le.fn.init = function(e, t, n) {
            var i, r;
            if (!e) return this;
            if (n = n || be, "string" == typeof e) {
                if (i = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : Ce.exec(e), !i || !i[1] && t) return ! t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
                if (i[1]) {
                    if (t = t instanceof le ? t[0] : t, le.merge(this, le.parseHTML(i[1], t && t.nodeType ? t.ownerDocument || t: Z, !0)), ve.test(i[1]) && le.isPlainObject(t)) for (i in t) le.isFunction(this[i]) ? this[i](t[i]) : this.attr(i, t[i]);
                    return this
                }
                return r = Z.getElementById(i[2]),
                r && r.parentNode && (this.length = 1, this[0] = r),
                this.context = Z,
                this.selector = e,
                this
            }
            return e.nodeType ? (this.context = this[0] = e, this.length = 1, this) : le.isFunction(e) ? void 0 !== n.ready ? n.ready(e) : e(le) : (void 0 !== e.selector && (this.selector = e.selector, this.context = e.context), le.makeArray(e, this))
        };
        we.prototype = le.fn,
        be = le(Z);
        var Te = /^(?:parents|prev(?:Until|All))/,
        Re = {
            children: !0,
            contents: !0,
            next: !0,
            prev: !0
        };
        le.fn.extend({
            has: function(e) {
                var t = le(e, this),
                n = t.length;
                return this.filter(function() {
                    for (var e = 0; n > e; e++) if (le.contains(this, t[e])) return ! 0
                })
            },
            closest: function(e, t) {
                for (var n, i = 0,
                r = this.length,
                o = [], a = ye.test(e) || "string" != typeof e ? le(e, t || this.context) : 0; r > i; i++) for (n = this[i]; n && n !== t; n = n.parentNode) if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && le.find.matchesSelector(n, e))) {
                    o.push(n);
                    break
                }
                return this.pushStack(o.length > 1 ? le.uniqueSort(o) : o)
            },
            index: function(e) {
                return e ? "string" == typeof e ? ie.call(le(e), this[0]) : ie.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length: -1
            },
            add: function(e, t) {
                return this.pushStack(le.uniqueSort(le.merge(this.get(), le(e, t))))
            },
            addBack: function(e) {
                return this.add(null == e ? this.prevObject: this.prevObject.filter(e))
            }
        }),
        le.each({
            parent: function(e) {
                var t = e.parentNode;
                return t && 11 !== t.nodeType ? t: null
            },
            parents: function(e) {
                return ge(e, "parentNode")
            },
            parentsUntil: function(e, t, n) {
                return ge(e, "parentNode", n)
            },
            next: function(e) {
                return u(e, "nextSibling")
            },
            prev: function(e) {
                return u(e, "previousSibling")
            },
            nextAll: function(e) {
                return ge(e, "nextSibling")
            },
            prevAll: function(e) {
                return ge(e, "previousSibling")
            },
            nextUntil: function(e, t, n) {
                return ge(e, "nextSibling", n)
            },
            prevUntil: function(e, t, n) {
                return ge(e, "previousSibling", n)
            },
            siblings: function(e) {
                return me((e.parentNode || {}).firstChild, e)
            },
            children: function(e) {
                return me(e.firstChild)
            },
            contents: function(e) {
                return e.contentDocument || le.merge([], e.childNodes)
            }
        },
        function(e, t) {
            le.fn[e] = function(n, i) {
                var r = le.map(this, t, n);
                return "Until" !== e.slice( - 5) && (i = n),
                i && "string" == typeof i && (r = le.filter(i, r)),
                this.length > 1 && (Re[e] || le.uniqueSort(r), Te.test(e) && r.reverse()),
                this.pushStack(r)
            }
        });
        var Me = /\S+/g;
        le.Callbacks = function(e) {
            e = "string" == typeof e ? l(e) : le.extend({},
            e);
            var t, n, i, r, o = [],
            a = [],
            s = -1,
            u = function() {
                for (r = e.once, i = t = !0; a.length; s = -1) for (n = a.shift(); ++s < o.length;) o[s].apply(n[0], n[1]) === !1 && e.stopOnFalse && (s = o.length, n = !1);
                e.memory || (n = !1),
                t = !1,
                r && (o = n ? [] : "")
            },
            c = {
                add: function() {
                    return o && (n && !t && (s = o.length - 1, a.push(n)),
                    function i(t) {
                        le.each(t,
                        function(t, n) {
                            le.isFunction(n) ? e.unique && c.has(n) || o.push(n) : n && n.length && "string" !== le.type(n) && i(n)
                        })
                    } (arguments), n && !t && u()),
                    this
                },
                remove: function() {
                    return le.each(arguments,
                    function(e, t) {
                        for (var n; (n = le.inArray(t, o, n)) > -1;) o.splice(n, 1),
                        s >= n && s--
                    }),
                    this
                },
                has: function(e) {
                    return e ? le.inArray(e, o) > -1 : o.length > 0
                },
                empty: function() {
                    return o && (o = []),
                    this
                },
                disable: function() {
                    return r = a = [],
                    o = n = "",
                    this
                },
                disabled: function() {
                    return ! o
                },
                lock: function() {
                    return r = a = [],
                    n || (o = n = ""),
                    this
                },
                locked: function() {
                    return !! r
                },
                fireWith: function(e, n) {
                    return r || (n = n || [], n = [e, n.slice ? n.slice() : n], a.push(n), t || u()),
                    this
                },
                fire: function() {
                    return c.fireWith(this, arguments),
                    this
                },
                fired: function() {
                    return !! i
                }
            };
            return c
        },
        le.extend({
            Deferred: function(e) {
                var t = [["resolve", "done", le.Callbacks("once memory"), "resolved"], ["reject", "fail", le.Callbacks("once memory"), "rejected"], ["notify", "progress", le.Callbacks("memory")]],
                n = "pending",
                i = {
                    state: function() {
                        return n
                    },
                    always: function() {
                        return r.done(arguments).fail(arguments),
                        this
                    },
                    then: function() {
                        var e = arguments;
                        return le.Deferred(function(n) {
                            le.each(t,
                            function(t, o) {
                                var a = le.isFunction(e[t]) && e[t];
                                r[o[1]](function() {
                                    var e = a && a.apply(this, arguments);
                                    e && le.isFunction(e.promise) ? e.promise().progress(n.notify).done(n.resolve).fail(n.reject) : n[o[0] + "With"](this === i ? n.promise() : this, a ? [e] : arguments)
                                })
                            }),
                            e = null
                        }).promise()
                    },
                    promise: function(e) {
                        return null != e ? le.extend(e, i) : i
                    }
                },
                r = {};
                return i.pipe = i.then,
                le.each(t,
                function(e, o) {
                    var a = o[2],
                    s = o[3];
                    i[o[1]] = a.add,
                    s && a.add(function() {
                        n = s
                    },
                    t[1 ^ e][2].disable, t[2][2].lock),
                    r[o[0]] = function() {
                        return r[o[0] + "With"](this === r ? i: this, arguments),
                        this
                    },
                    r[o[0] + "With"] = a.fireWith
                }),
                i.promise(r),
                e && e.call(r, r),
                r
            },
            when: function(e) {
                var t, n, i, r = 0,
                o = ee.call(arguments),
                a = o.length,
                s = 1 !== a || e && le.isFunction(e.promise) ? a: 0,
                u = 1 === s ? e: le.Deferred(),
                l = function(e, n, i) {
                    return function(r) {
                        n[e] = this,
                        i[e] = arguments.length > 1 ? ee.call(arguments) : r,
                        i === t ? u.notifyWith(n, i) : --s || u.resolveWith(n, i)
                    }
                };
                if (a > 1) for (t = new Array(a), n = new Array(a), i = new Array(a); a > r; r++) o[r] && le.isFunction(o[r].promise) ? o[r].promise().progress(l(r, n, t)).done(l(r, i, o)).fail(u.reject) : --s;
                return s || u.resolveWith(i, o),
                u.promise()
            }
        });
        var Be;
        le.fn.ready = function(e) {
            return le.ready.promise().done(e),
            this
        },
        le.extend({
            isReady: !1,
            readyWait: 1,
            holdReady: function(e) {
                e ? le.readyWait++:le.ready(!0)
            },
            ready: function(e) { (e === !0 ? --le.readyWait: le.isReady) || (le.isReady = !0, e !== !0 && --le.readyWait > 0 || (Be.resolveWith(Z, [le]), le.fn.triggerHandler && (le(Z).triggerHandler("ready"), le(Z).off("ready"))))
            }
        }),
        le.ready.promise = function(e) {
            return Be || (Be = le.Deferred(), "complete" === Z.readyState || "loading" !== Z.readyState && !Z.documentElement.doScroll ? n.setTimeout(le.ready) : (Z.addEventListener("DOMContentLoaded", c), n.addEventListener("load", c))),
            Be.promise(e)
        },
        le.ready.promise();
        var ke = function(e, t, n, i, r, o, a) {
            var s = 0,
            u = e.length,
            l = null == n;
            if ("object" === le.type(n)) {
                r = !0;
                for (s in n) ke(e, t, s, n[s], !0, o, a)
            } else if (void 0 !== i && (r = !0, le.isFunction(i) || (a = !0), l && (a ? (t.call(e, i), t = null) : (l = t, t = function(e, t, n) {
                return l.call(le(e), n)
            })), t)) for (; u > s; s++) t(e[s], n, a ? i: i.call(e[s], s, t(e[s], n)));
            return r ? e: l ? t.call(e) : u ? t(e[0], n) : o
        },
        Ee = function(e) {
            return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
        };
        f.uid = 1,
        f.prototype = {
            register: function(e, t) {
                var n = t || {};
                return e.nodeType ? e[this.expando] = n: Object.defineProperty(e, this.expando, {
                    value: n,
                    writable: !0,
                    configurable: !0
                }),
                e[this.expando]
            },
            cache: function(e) {
                if (!Ee(e)) return {};
                var t = e[this.expando];
                return t || (t = {},
                Ee(e) && (e.nodeType ? e[this.expando] = t: Object.defineProperty(e, this.expando, {
                    value: t,
                    configurable: !0
                }))),
                t
            },
            set: function(e, t, n) {
                var i, r = this.cache(e);
                if ("string" == typeof t) r[t] = n;
                else for (i in t) r[i] = t[i];
                return r
            },
            get: function(e, t) {
                return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][t]
            },
            access: function(e, t, n) {
                var i;
                return void 0 === t || t && "string" == typeof t && void 0 === n ? (i = this.get(e, t), void 0 !== i ? i: this.get(e, le.camelCase(t))) : (this.set(e, t, n), void 0 !== n ? n: t)
            },
            remove: function(e, t) {
                var n, i, r, o = e[this.expando];
                if (void 0 !== o) {
                    if (void 0 === t) this.register(e);
                    else {
                        le.isArray(t) ? i = t.concat(t.map(le.camelCase)) : (r = le.camelCase(t), t in o ? i = [t, r] : (i = r, i = i in o ? [i] : i.match(Me) || [])),
                        n = i.length;
                        for (; n--;) delete o[i[n]]
                    } (void 0 === t || le.isEmptyObject(o)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
                }
            },
            hasData: function(e) {
                var t = e[this.expando];
                return void 0 !== t && !le.isEmptyObject(t)
            }
        };
        var je = new f,
        Ne = new f,
        Se = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
        De = /[A-Z]/g;
        le.extend({
            hasData: function(e) {
                return Ne.hasData(e) || je.hasData(e)
            },
            data: function(e, t, n) {
                return Ne.access(e, t, n)
            },
            removeData: function(e, t) {
                Ne.remove(e, t)
            },
            _data: function(e, t, n) {
                return je.access(e, t, n)
            },
            _removeData: function(e, t) {
                je.remove(e, t)
            }
        }),
        le.fn.extend({
            data: function(e, t) {
                var n, i, r, o = this[0],
                a = o && o.attributes;
                if (void 0 === e) {
                    if (this.length && (r = Ne.get(o), 1 === o.nodeType && !je.get(o, "hasDataAttrs"))) {
                        for (n = a.length; n--;) a[n] && (i = a[n].name, 0 === i.indexOf("data-") && (i = le.camelCase(i.slice(5)), p(o, i, r[i])));
                        je.set(o, "hasDataAttrs", !0)
                    }
                    return r
                }
                return "object" == typeof e ? this.each(function() {
                    Ne.set(this, e)
                }) : ke(this,
                function(t) {
                    var n, i;
                    if (o && void 0 === t) {
                        if (n = Ne.get(o, e) || Ne.get(o, e.replace(De, "-$&").toLowerCase()), void 0 !== n) return n;
                        if (i = le.camelCase(e), n = Ne.get(o, i), void 0 !== n) return n;
                        if (n = p(o, i, void 0), void 0 !== n) return n
                    } else i = le.camelCase(e),
                    this.each(function() {
                        var n = Ne.get(this, i);
                        Ne.set(this, i, t),
                        e.indexOf("-") > -1 && void 0 !== n && Ne.set(this, e, t)
                    })
                },
                null, t, arguments.length > 1, null, !0)
            },
            removeData: function(e) {
                return this.each(function() {
                    Ne.remove(this, e)
                })
            }
        }),
        le.extend({
            queue: function(e, t, n) {
                var i;
                return e ? (t = (t || "fx") + "queue", i = je.get(e, t), n && (!i || le.isArray(n) ? i = je.access(e, t, le.makeArray(n)) : i.push(n)), i || []) : void 0
            },
            dequeue: function(e, t) {
                t = t || "fx";
                var n = le.queue(e, t),
                i = n.length,
                r = n.shift(),
                o = le._queueHooks(e, t),
                a = function() {
                    le.dequeue(e, t)
                };
                "inprogress" === r && (r = n.shift(), i--),
                r && ("fx" === t && n.unshift("inprogress"), delete o.stop, r.call(e, a, o)),
                !i && o && o.empty.fire()
            },
            _queueHooks: function(e, t) {
                var n = t + "queueHooks";
                return je.get(e, n) || je.access(e, n, {
                    empty: le.Callbacks("once memory").add(function() {
                        je.remove(e, [t + "queue", n])
                    })
                })
            }
        }),
        le.fn.extend({
            queue: function(e, t) {
                var n = 2;
                return "string" != typeof e && (t = e, e = "fx", n--),
                arguments.length < n ? le.queue(this[0], e) : void 0 === t ? this: this.each(function() {
                    var n = le.queue(this, e, t);
                    le._queueHooks(this, e),
                    "fx" === e && "inprogress" !== n[0] && le.dequeue(this, e)
                })
            },
            dequeue: function(e) {
                return this.each(function() {
                    le.dequeue(this, e)
                })
            },
            clearQueue: function(e) {
                return this.queue(e || "fx", [])
            },
            promise: function(e, t) {
                var n, i = 1,
                r = le.Deferred(),
                o = this,
                a = this.length,
                s = function() {--i || r.resolveWith(o, [o])
                };
                for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;) n = je.get(o[a], e + "queueHooks"),
                n && n.empty && (i++, n.empty.add(s));
                return s(),
                r.promise(t)
            }
        });
        var Ye = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
        Ge = new RegExp("^(?:([+-])=|)(" + Ye + ")([a-z%]*)$", "i"),
        qe = ["Top", "Right", "Bottom", "Left"],
        Ae = function(e, t) {
            return e = t || e,
            "none" === le.css(e, "display") || !le.contains(e.ownerDocument, e)
        },
        Ke = /^(?:checkbox|radio)$/i,
        Le = /<([\w:-]+)/,
        He = /^$|\/(?:java|ecma)script/i,
        Oe = {
            option: [1, "<select multiple='multiple'>", "</select>"],
            thead: [1, "<table>", "</table>"],
            col: [2, "<table><colgroup>", "</colgroup></table>"],
            tr: [2, "<table><tbody>", "</tbody></table>"],
            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
            _default: [0, "", ""]
        };
        Oe.optgroup = Oe.option,
        Oe.tbody = Oe.tfoot = Oe.colgroup = Oe.caption = Oe.thead,
        Oe.th = Oe.td;
        var Fe = /<|&#?\w+;/; !
        function() {
            var e = Z.createDocumentFragment(),
            t = e.appendChild(Z.createElement("div")),
            n = Z.createElement("input");
            n.setAttribute("type", "radio"),
            n.setAttribute("checked", "checked"),
            n.setAttribute("name", "t"),
            t.appendChild(n),
            se.checkClone = t.cloneNode(!0).cloneNode(!0).lastChild.checked,
            t.innerHTML = "<textarea>x</textarea>",
            se.noCloneChecked = !!t.cloneNode(!0).lastChild.defaultValue
        } ();
        var Pe = /^key/,
        ze = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
        We = /^([^.]*)(?:\.(.+)|)/;
        le.event = {
            global: {},
            add: function(e, t, n, i, r) {
                var o, a, s, u, l, c, f, p, d, h, g, m = je.get(e);
                if (m) for (n.handler && (o = n, n = o.handler, r = o.selector), n.guid || (n.guid = le.guid++), (u = m.events) || (u = m.events = {}), (a = m.handle) || (a = m.handle = function(t) {
                    return "undefined" != typeof le && le.event.triggered !== t.type ? le.event.dispatch.apply(e, arguments) : void 0
                }), t = (t || "").match(Me) || [""], l = t.length; l--;) s = We.exec(t[l]) || [],
                d = g = s[1],
                h = (s[2] || "").split(".").sort(),
                d && (f = le.event.special[d] || {},
                d = (r ? f.delegateType: f.bindType) || d, f = le.event.special[d] || {},
                c = le.extend({
                    type: d,
                    origType: g,
                    data: i,
                    handler: n,
                    guid: n.guid,
                    selector: r,
                    needsContext: r && le.expr.match.needsContext.test(r),
                    namespace: h.join(".")
                },
                o), (p = u[d]) || (p = u[d] = [], p.delegateCount = 0, f.setup && f.setup.call(e, i, h, a) !== !1 || e.addEventListener && e.addEventListener(d, a)), f.add && (f.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), r ? p.splice(p.delegateCount++, 0, c) : p.push(c), le.event.global[d] = !0)
            },
            remove: function(e, t, n, i, r) {
                var o, a, s, u, l, c, f, p, d, h, g, m = je.hasData(e) && je.get(e);
                if (m && (u = m.events)) {
                    for (t = (t || "").match(Me) || [""], l = t.length; l--;) if (s = We.exec(t[l]) || [], d = g = s[1], h = (s[2] || "").split(".").sort(), d) {
                        for (f = le.event.special[d] || {},
                        d = (i ? f.delegateType: f.bindType) || d, p = u[d] || [], s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = p.length; o--;) c = p[o],
                        !r && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || i && i !== c.selector && ("**" !== i || !c.selector) || (p.splice(o, 1), c.selector && p.delegateCount--, f.remove && f.remove.call(e, c));
                        a && !p.length && (f.teardown && f.teardown.call(e, h, m.handle) !== !1 || le.removeEvent(e, d, m.handle), delete u[d])
                    } else for (d in u) le.event.remove(e, d + t[l], n, i, !0);
                    le.isEmptyObject(u) && je.remove(e, "handle events")
                }
            },
            dispatch: function(e) {
                e = le.event.fix(e);
                var t, n, i, r, o, a = [],
                s = ee.call(arguments),
                u = (je.get(this, "events") || {})[e.type] || [],
                l = le.event.special[e.type] || {};
                if (s[0] = e, e.delegateTarget = this, !l.preDispatch || l.preDispatch.call(this, e) !== !1) {
                    for (a = le.event.handlers.call(this, e, u), t = 0; (r = a[t++]) && !e.isPropagationStopped();) for (e.currentTarget = r.elem, n = 0; (o = r.handlers[n++]) && !e.isImmediatePropagationStopped();) e.rnamespace && !e.rnamespace.test(o.namespace) || (e.handleObj = o, e.data = o.data, i = ((le.event.special[o.origType] || {}).handle || o.handler).apply(r.elem, s), void 0 !== i && (e.result = i) === !1 && (e.preventDefault(), e.stopPropagation()));
                    return l.postDispatch && l.postDispatch.call(this, e),
                    e.result
                }
            },
            handlers: function(e, t) {
                var n, i, r, o, a = [],
                s = t.delegateCount,
                u = e.target;
                if (s && u.nodeType && ("click" !== e.type || isNaN(e.button) || e.button < 1)) for (; u !== this; u = u.parentNode || this) if (1 === u.nodeType && (u.disabled !== !0 || "click" !== e.type)) {
                    for (i = [], n = 0; s > n; n++) o = t[n],
                    r = o.selector + " ",
                    void 0 === i[r] && (i[r] = o.needsContext ? le(r, this).index(u) > -1 : le.find(r, this, null, [u]).length),
                    i[r] && i.push(o);
                    i.length && a.push({
                        elem: u,
                        handlers: i
                    })
                }
                return s < t.length && a.push({
                    elem: this,
                    handlers: t.slice(s)
                }),
                a
            },
            props: "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
            fixHooks: {},
            keyHooks: {
                props: "char charCode key keyCode".split(" "),
                filter: function(e, t) {
                    return null == e.which && (e.which = null != t.charCode ? t.charCode: t.keyCode),
                    e
                }
            },
            mouseHooks: {
                props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
                filter: function(e, t) {
                    var n, i, r, o = t.button;
                    return null == e.pageX && null != t.clientX && (n = e.target.ownerDocument || Z, i = n.documentElement, r = n.body, e.pageX = t.clientX + (i && i.scrollLeft || r && r.scrollLeft || 0) - (i && i.clientLeft || r && r.clientLeft || 0), e.pageY = t.clientY + (i && i.scrollTop || r && r.scrollTop || 0) - (i && i.clientTop || r && r.clientTop || 0)),
                    e.which || void 0 === o || (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0),
                    e
                }
            },
            fix: function(e) {
                if (e[le.expando]) return e;
                var t, n, i, r = e.type,
                o = e,
                a = this.fixHooks[r];
                for (a || (this.fixHooks[r] = a = ze.test(r) ? this.mouseHooks: Pe.test(r) ? this.keyHooks: {}), i = a.props ? this.props.concat(a.props) : this.props, e = new le.Event(o), t = i.length; t--;) n = i[t],
                e[n] = o[n];
                return e.target || (e.target = Z),
                3 === e.target.nodeType && (e.target = e.target.parentNode),
                a.filter ? a.filter(e, o) : e
            },
            special: {
                load: {
                    noBubble: !0
                },
                focus: {
                    trigger: function() {
                        return this !== x() && this.focus ? (this.focus(), !1) : void 0
                    },
                    delegateType: "focusin"
                },
                blur: {
                    trigger: function() {
                        return this === x() && this.blur ? (this.blur(), !1) : void 0
                    },
                    delegateType: "focusout"
                },
                click: {
                    trigger: function() {
                        return "checkbox" === this.type && this.click && le.nodeName(this, "input") ? (this.click(), !1) : void 0
                    },
                    _default: function(e) {
                        return le.nodeName(e.target, "a")
                    }
                },
                beforeunload: {
                    postDispatch: function(e) {
                        void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
                    }
                }
            }
        },
        le.removeEvent = function(e, t, n) {
            e.removeEventListener && e.removeEventListener(t, n)
        },
        le.Event = function(e, t) {
            return this instanceof le.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && e.returnValue === !1 ? y: v) : this.type = e, t && le.extend(this, t), this.timeStamp = e && e.timeStamp || le.now(), void(this[le.expando] = !0)) : new le.Event(e, t)
        },
        le.Event.prototype = {
            constructor: le.Event,
            isDefaultPrevented: v,
            isPropagationStopped: v,
            isImmediatePropagationStopped: v,
            preventDefault: function() {
                var e = this.originalEvent;
                this.isDefaultPrevented = y,
                e && e.preventDefault()
            },
            stopPropagation: function() {
                var e = this.originalEvent;
                this.isPropagationStopped = y,
                e && e.stopPropagation()
            },
            stopImmediatePropagation: function() {
                var e = this.originalEvent;
                this.isImmediatePropagationStopped = y,
                e && e.stopImmediatePropagation(),
                this.stopPropagation()
            }
        },
        le.each({
            mouseenter: "mouseover",
            mouseleave: "mouseout",
            pointerenter: "pointerover",
            pointerleave: "pointerout"
        },
        function(e, t) {
            le.event.special[e] = {
                delegateType: t,
                bindType: t,
                handle: function(e) {
                    var n, i = this,
                    r = e.relatedTarget,
                    o = e.handleObj;
                    return r && (r === i || le.contains(i, r)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t),
                    n
                }
            }
        }),
        le.fn.extend({
            on: function(e, t, n, i) {
                return b(this, e, t, n, i)
            },
            one: function(e, t, n, i) {
                return b(this, e, t, n, i, 1)
            },
            off: function(e, t, n) {
                var i, r;
                if (e && e.preventDefault && e.handleObj) return i = e.handleObj,
                le(e.delegateTarget).off(i.namespace ? i.origType + "." + i.namespace: i.origType, i.selector, i.handler),
                this;
                if ("object" == typeof e) {
                    for (r in e) this.off(r, t, e[r]);
                    return this
                }
                return t !== !1 && "function" != typeof t || (n = t, t = void 0),
                n === !1 && (n = v),
                this.each(function() {
                    le.event.remove(this, e, n, t)
                })
            }
        });
        var Ie = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
        $e = /<script|<style|<link/i,
        _e = /checked\s*(?:[^=]|=\s*.checked.)/i,
        Xe = /^true\/(.*)/,
        Ue = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
        le.extend({
            htmlPrefilter: function(e) {
                return e.replace(Ie, "<$1></$2>")
            },
            clone: function(e, t, n) {
                var i, r, o, a, s = e.cloneNode(!0),
                u = le.contains(e.ownerDocument, e);
                if (! (se.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || le.isXMLDoc(e))) for (a = h(s), o = h(e), i = 0, r = o.length; r > i; i++) M(o[i], a[i]);
                if (t) if (n) for (o = o || h(e), a = a || h(s), i = 0, r = o.length; r > i; i++) R(o[i], a[i]);
                else R(e, s);
                return a = h(s, "script"),
                a.length > 0 && g(a, !u && h(e, "script")),
                s
            },
            cleanData: function(e) {
                for (var t, n, i, r = le.event.special,
                o = 0; void 0 !== (n = e[o]); o++) if (Ee(n)) {
                    if (t = n[je.expando]) {
                        if (t.events) for (i in t.events) r[i] ? le.event.remove(n, i) : le.removeEvent(n, i, t.handle);
                        n[je.expando] = void 0
                    }
                    n[Ne.expando] && (n[Ne.expando] = void 0)
                }
            }
        }),
        le.fn.extend({
            domManip: B,
            detach: function(e) {
                return k(this, e, !0)
            },
            remove: function(e) {
                return k(this, e)
            },
            text: function(e) {
                return ke(this,
                function(e) {
                    return void 0 === e ? le.text(this) : this.empty().each(function() {
                        1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
                    })
                },
                null, e, arguments.length)
            },
            append: function() {
                return B(this, arguments,
                function(e) {
                    if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                        var t = C(this, e);
                        t.appendChild(e)
                    }
                })
            },
            prepend: function() {
                return B(this, arguments,
                function(e) {
                    if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
                        var t = C(this, e);
                        t.insertBefore(e, t.firstChild)
                    }
                })
            },
            before: function() {
                return B(this, arguments,
                function(e) {
                    this.parentNode && this.parentNode.insertBefore(e, this)
                })
            },
            after: function() {
                return B(this, arguments,
                function(e) {
                    this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
                })
            },
            empty: function() {
                for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (le.cleanData(h(e, !1)), e.textContent = "");
                return this
            },
            clone: function(e, t) {
                return e = null == e ? !1 : e,
                t = null == t ? e: t,
                this.map(function() {
                    return le.clone(this, e, t)
                })
            },
            html: function(e) {
                return ke(this,
                function(e) {
                    var t = this[0] || {},
                    n = 0,
                    i = this.length;
                    if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
                    if ("string" == typeof e && !$e.test(e) && !Oe[(Le.exec(e) || ["", ""])[1].toLowerCase()]) {
                        e = le.htmlPrefilter(e);
                        try {
                            for (; i > n; n++) t = this[n] || {},
                            1 === t.nodeType && (le.cleanData(h(t, !1)), t.innerHTML = e);
                            t = 0
                        } catch(r) {}
                    }
                    t && this.empty().append(e)
                },
                null, e, arguments.length)
            },
            replaceWith: function() {
                var e = [];
                return B(this, arguments,
                function(t) {
                    var n = this.parentNode;
                    le.inArray(this, e) < 0 && (le.cleanData(h(this)), n && n.replaceChild(t, this))
                },
                e)
            }
        }),
        le.each({
            appendTo: "append",
            prependTo: "prepend",
            insertBefore: "before",
            insertAfter: "after",
            replaceAll: "replaceWith"
        },
        function(e, t) {
            le.fn[e] = function(e) {
                for (var n, i = [], r = le(e), o = r.length - 1, a = 0; o >= a; a++) n = a === o ? this: this.clone(!0),
                le(r[a])[t](n),
                ne.apply(i, n.get());
                return this.pushStack(i)
            }
        });
        var Ve, Je = {
            HTML: "block",
            BODY: "block"
        },
        Qe = /^margin/,
        Ze = new RegExp("^(" + Ye + ")(?!px)[a-z%]+$", "i"),
        et = function(e) {
            var t = e.ownerDocument.defaultView;
            return t && t.opener || (t = n),
            t.getComputedStyle(e)
        },
        tt = function(e, t, n, i) {
            var r, o, a = {};
            for (o in t) a[o] = e.style[o],
            e.style[o] = t[o];
            r = n.apply(e, i || []);
            for (o in t) e.style[o] = a[o];
            return r
        },
        nt = Z.documentElement; !
        function() {
            function e() {
                s.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",
                s.innerHTML = "",
                nt.appendChild(a);
                var e = n.getComputedStyle(s);
                t = "1%" !== e.top,
                o = "2px" === e.marginLeft,
                i = "4px" === e.width,
                s.style.marginRight = "50%",
                r = "4px" === e.marginRight,
                nt.removeChild(a)
            }
            var t, i, r, o, a = Z.createElement("div"),
            s = Z.createElement("div");
            s.style && (s.style.backgroundClip = "content-box", s.cloneNode(!0).style.backgroundClip = "", se.clearCloneStyle = "content-box" === s.style.backgroundClip, a.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", a.appendChild(s), le.extend(se, {
                pixelPosition: function() {
                    return e(),
                    t
                },
                boxSizingReliable: function() {
                    return null == i && e(),
                    i
                },
                pixelMarginRight: function() {
                    return null == i && e(),
                    r
                },
                reliableMarginLeft: function() {
                    return null == i && e(),
                    o
                },
                reliableMarginRight: function() {
                    var e, t = s.appendChild(Z.createElement("div"));
                    return t.style.cssText = s.style.cssText = "-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",
                    t.style.marginRight = t.style.width = "0",
                    s.style.width = "1px",
                    nt.appendChild(a),
                    e = !parseFloat(n.getComputedStyle(t).marginRight),
                    nt.removeChild(a),
                    s.removeChild(t),
                    e
                }
            }))
        } ();
        var it = /^(none|table(?!-c[ea]).+)/,
        rt = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        },
        ot = {
            letterSpacing: "0",
            fontWeight: "400"
        },
        at = ["Webkit", "O", "Moz", "ms"],
        st = Z.createElement("div").style;
        le.extend({
            cssHooks: {
                opacity: {
                    get: function(e, t) {
                        if (t) {
                            var n = N(e, "opacity");
                            return "" === n ? "1": n
                        }
                    }
                }
            },
            cssNumber: {
                animationIterationCount: !0,
                columnCount: !0,
                fillOpacity: !0,
                flexGrow: !0,
                flexShrink: !0,
                fontWeight: !0,
                lineHeight: !0,
                opacity: !0,
                order: !0,
                orphans: !0,
                widows: !0,
                zIndex: !0,
                zoom: !0
            },
            cssProps: {
                "float": "cssFloat"
            },
            style: function(e, t, n, i) {
                if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
                    var r, o, a, s = le.camelCase(t),
                    u = e.style;
                    return t = le.cssProps[s] || (le.cssProps[s] = D(s) || s),
                    a = le.cssHooks[t] || le.cssHooks[s],
                    void 0 === n ? a && "get" in a && void 0 !== (r = a.get(e, !1, i)) ? r: u[t] : (o = typeof n, "string" === o && (r = Ge.exec(n)) && r[1] && (n = d(e, t, r), o = "number"), void(null != n && n === n && ("number" === o && (n += r && r[3] || (le.cssNumber[s] ? "": "px")), se.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (u[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, i)) || (u[t] = n))))
                }
            },
            css: function(e, t, n, i) {
                var r, o, a, s = le.camelCase(t);
                return t = le.cssProps[s] || (le.cssProps[s] = D(s) || s),
                a = le.cssHooks[t] || le.cssHooks[s],
                a && "get" in a && (r = a.get(e, !0, n)),
                void 0 === r && (r = N(e, t, i)),
                "normal" === r && t in ot && (r = ot[t]),
                "" === n || n ? (o = parseFloat(r), n === !0 || isFinite(o) ? o || 0 : r) : r
            }
        }),
        le.each(["height", "width"],
        function(e, t) {
            le.cssHooks[t] = {
                get: function(e, n, i) {
                    return n ? it.test(le.css(e, "display")) && 0 === e.offsetWidth ? tt(e, rt,
                    function() {
                        return q(e, t, i)
                    }) : q(e, t, i) : void 0
                },
                set: function(e, n, i) {
                    var r, o = i && et(e),
                    a = i && G(e, t, i, "border-box" === le.css(e, "boxSizing", !1, o), o);
                    return a && (r = Ge.exec(n)) && "px" !== (r[3] || "px") && (e.style[t] = n, n = le.css(e, t)),
                    Y(e, n, a)
                }
            }
        }),
        le.cssHooks.marginLeft = S(se.reliableMarginLeft,
        function(e, t) {
            return t ? (parseFloat(N(e, "marginLeft")) || e.getBoundingClientRect().left - tt(e, {
                marginLeft: 0
            },
            function() {
                return e.getBoundingClientRect().left
            })) + "px": void 0
        }),
        le.cssHooks.marginRight = S(se.reliableMarginRight,
        function(e, t) {
            return t ? tt(e, {
                display: "inline-block"
            },
            N, [e, "marginRight"]) : void 0
        }),
        le.each({
            margin: "",
            padding: "",
            border: "Width"
        },
        function(e, t) {
            le.cssHooks[e + t] = {
                expand: function(n) {
                    for (var i = 0,
                    r = {},
                    o = "string" == typeof n ? n.split(" ") : [n]; 4 > i; i++) r[e + qe[i] + t] = o[i] || o[i - 2] || o[0];
                    return r
                }
            },
            Qe.test(e) || (le.cssHooks[e + t].set = Y)
        }),
        le.fn.extend({
            css: function(e, t) {
                return ke(this,
                function(e, t, n) {
                    var i, r, o = {},
                    a = 0;
                    if (le.isArray(t)) {
                        for (i = et(e), r = t.length; r > a; a++) o[t[a]] = le.css(e, t[a], !1, i);
                        return o
                    }
                    return void 0 !== n ? le.style(e, t, n) : le.css(e, t)
                },
                e, t, arguments.length > 1)
            },
            show: function() {
                return A(this, !0)
            },
            hide: function() {
                return A(this)
            },
            toggle: function(e) {
                return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
                    Ae(this) ? le(this).show() : le(this).hide()
                })
            }
        }),
        le.Tween = K,
        K.prototype = {
            constructor: K,
            init: function(e, t, n, i, r, o) {
                this.elem = e,
                this.prop = n,
                this.easing = r || le.easing._default,
                this.options = t,
                this.start = this.now = this.cur(),
                this.end = i,
                this.unit = o || (le.cssNumber[n] ? "": "px")
            },
            cur: function() {
                var e = K.propHooks[this.prop];
                return e && e.get ? e.get(this) : K.propHooks._default.get(this)
            },
            run: function(e) {
                var t, n = K.propHooks[this.prop];
                return this.options.duration ? this.pos = t = le.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e,
                this.now = (this.end - this.start) * t + this.start,
                this.options.step && this.options.step.call(this.elem, this.now, this),
                n && n.set ? n.set(this) : K.propHooks._default.set(this),
                this
            }
        },
        K.prototype.init.prototype = K.prototype,
        K.propHooks = {
            _default: {
                get: function(e) {
                    var t;
                    return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = le.css(e.elem, e.prop, ""), t && "auto" !== t ? t: 0)
                },
                set: function(e) {
                    le.fx.step[e.prop] ? le.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[le.cssProps[e.prop]] && !le.cssHooks[e.prop] ? e.elem[e.prop] = e.now: le.style(e.elem, e.prop, e.now + e.unit)
                }
            }
        },
        K.propHooks.scrollTop = K.propHooks.scrollLeft = {
            set: function(e) {
                e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
            }
        },
        le.easing = {
            linear: function(e) {
                return e
            },
            swing: function(e) {
                return.5 - Math.cos(e * Math.PI) / 2
            },
            _default: "swing"
        },
        le.fx = K.prototype.init,
        le.fx.step = {};
        var ut, lt, ct = /^(?:toggle|show|hide)$/,
        ft = /queueHooks$/;
        le.Animation = le.extend(z, {
            tweeners: {
                "*": [function(e, t) {
                    var n = this.createTween(e, t);
                    return d(n.elem, e, Ge.exec(t), n),
                    n
                }]
            },
            tweener: function(e, t) {
                le.isFunction(e) ? (t = e, e = ["*"]) : e = e.match(Me);
                for (var n, i = 0,
                r = e.length; r > i; i++) n = e[i],
                z.tweeners[n] = z.tweeners[n] || [],
                z.tweeners[n].unshift(t)
            },
            prefilters: [F],
            prefilter: function(e, t) {
                t ? z.prefilters.unshift(e) : z.prefilters.push(e)
            }
        }),
        le.speed = function(e, t, n) {
            var i = e && "object" == typeof e ? le.extend({},
            e) : {
                complete: n || !n && t || le.isFunction(e) && e,
                duration: e,
                easing: n && t || t && !le.isFunction(t) && t
            };
            return i.duration = le.fx.off ? 0 : "number" == typeof i.duration ? i.duration: i.duration in le.fx.speeds ? le.fx.speeds[i.duration] : le.fx.speeds._default,
            null != i.queue && i.queue !== !0 || (i.queue = "fx"),
            i.old = i.complete,
            i.complete = function() {
                le.isFunction(i.old) && i.old.call(this),
                i.queue && le.dequeue(this, i.queue)
            },
            i
        },
        le.fn.extend({
            fadeTo: function(e, t, n, i) {
                return this.filter(Ae).css("opacity", 0).show().end().animate({
                    opacity: t
                },
                e, n, i)
            },
            animate: function(e, t, n, i) {
                var r = le.isEmptyObject(e),
                o = le.speed(t, n, i),
                a = function() {
                    var t = z(this, le.extend({},
                    e), o); (r || je.get(this, "finish")) && t.stop(!0)
                };
                return a.finish = a,
                r || o.queue === !1 ? this.each(a) : this.queue(o.queue, a)
            },
            stop: function(e, t, n) {
                var i = function(e) {
                    var t = e.stop;
                    delete e.stop,
                    t(n)
                };
                return "string" != typeof e && (n = t, t = e, e = void 0),
                t && e !== !1 && this.queue(e || "fx", []),
                this.each(function() {
                    var t = !0,
                    r = null != e && e + "queueHooks",
                    o = le.timers,
                    a = je.get(this);
                    if (r) a[r] && a[r].stop && i(a[r]);
                    else for (r in a) a[r] && a[r].stop && ft.test(r) && i(a[r]);
                    for (r = o.length; r--;) o[r].elem !== this || null != e && o[r].queue !== e || (o[r].anim.stop(n), t = !1, o.splice(r, 1)); ! t && n || le.dequeue(this, e)
                })
            },
            finish: function(e) {
                return e !== !1 && (e = e || "fx"),
                this.each(function() {
                    var t, n = je.get(this),
                    i = n[e + "queue"],
                    r = n[e + "queueHooks"],
                    o = le.timers,
                    a = i ? i.length: 0;
                    for (n.finish = !0, le.queue(this, e, []), r && r.stop && r.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
                    for (t = 0; a > t; t++) i[t] && i[t].finish && i[t].finish.call(this);
                    delete n.finish
                })
            }
        }),
        le.each(["toggle", "show", "hide"],
        function(e, t) {
            var n = le.fn[t];
            le.fn[t] = function(e, i, r) {
                return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(H(t, !0), e, i, r)
            }
        }),
        le.each({
            slideDown: H("show"),
            slideUp: H("hide"),
            slideToggle: H("toggle"),
            fadeIn: {
                opacity: "show"
            },
            fadeOut: {
                opacity: "hide"
            },
            fadeToggle: {
                opacity: "toggle"
            }
        },
        function(e, t) {
            le.fn[e] = function(e, n, i) {
                return this.animate(t, e, n, i)
            }
        }),
        le.timers = [],
        le.fx.tick = function() {
            var e, t = 0,
            n = le.timers;
            for (ut = le.now(); t < n.length; t++) e = n[t],
            e() || n[t] !== e || n.splice(t--, 1);
            n.length || le.fx.stop(),
            ut = void 0
        },
        le.fx.timer = function(e) {
            le.timers.push(e),
            e() ? le.fx.start() : le.timers.pop()
        },
        le.fx.interval = 13,
        le.fx.start = function() {
            lt || (lt = n.setInterval(le.fx.tick, le.fx.interval))
        },
        le.fx.stop = function() {
            n.clearInterval(lt),
            lt = null
        },
        le.fx.speeds = {
            slow: 600,
            fast: 200,
            _default: 400
        },
        le.fn.delay = function(e, t) {
            return e = le.fx ? le.fx.speeds[e] || e: e,
            t = t || "fx",
            this.queue(t,
            function(t, i) {
                var r = n.setTimeout(t, e);
                i.stop = function() {
                    n.clearTimeout(r)
                }
            })
        },
        function() {
            var e = Z.createElement("input"),
            t = Z.createElement("select"),
            n = t.appendChild(Z.createElement("option"));
            e.type = "checkbox",
            se.checkOn = "" !== e.value,
            se.optSelected = n.selected,
            t.disabled = !0,
            se.optDisabled = !n.disabled,
            e = Z.createElement("input"),
            e.value = "t",
            e.type = "radio",
            se.radioValue = "t" === e.value
        } ();
        var pt, dt = le.expr.attrHandle;
        le.fn.extend({
            attr: function(e, t) {
                return ke(this, le.attr, e, t, arguments.length > 1)
            },
            removeAttr: function(e) {
                return this.each(function() {
                    le.removeAttr(this, e)
                })
            }
        }),
        le.extend({
            attr: function(e, t, n) {
                var i, r, o = e.nodeType;
                return 3 !== o && 8 !== o && 2 !== o ? "undefined" == typeof e.getAttribute ? le.prop(e, t, n) : (1 === o && le.isXMLDoc(e) || (t = t.toLowerCase(), r = le.attrHooks[t] || (le.expr.match.bool.test(t) ? pt: void 0)), void 0 !== n ? null === n ? void le.removeAttr(e, t) : r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i: (e.setAttribute(t, n + ""), n) : r && "get" in r && null !== (i = r.get(e, t)) ? i: (i = le.find.attr(e, t), null == i ? void 0 : i)) : void 0
            },
            attrHooks: {
                type: {
                    set: function(e, t) {
                        if (!se.radioValue && "radio" === t && le.nodeName(e, "input")) {
                            var n = e.value;
                            return e.setAttribute("type", t),
                            n && (e.value = n),
                            t
                        }
                    }
                }
            },
            removeAttr: function(e, t) {
                var n, i, r = 0,
                o = t && t.match(Me);
                if (o && 1 === e.nodeType) for (; n = o[r++];) i = le.propFix[n] || n,
                le.expr.match.bool.test(n) && (e[i] = !1),
                e.removeAttribute(n)
            }
        }),
        pt = {
            set: function(e, t, n) {
                return t === !1 ? le.removeAttr(e, n) : e.setAttribute(n, n),
                n
            }
        },
        le.each(le.expr.match.bool.source.match(/\w+/g),
        function(e, t) {
            var n = dt[t] || le.find.attr;
            dt[t] = function(e, t, i) {
                var r, o;
                return i || (o = dt[t], dt[t] = r, r = null != n(e, t, i) ? t.toLowerCase() : null, dt[t] = o),
                r
            }
        });
        var ht = /^(?:input|select|textarea|button)$/i,
        gt = /^(?:a|area)$/i;
        le.fn.extend({
            prop: function(e, t) {
                return ke(this, le.prop, e, t, arguments.length > 1)
            },
            removeProp: function(e) {
                return this.each(function() {
                    delete this[le.propFix[e] || e]
                })
            }
        }),
        le.extend({
            prop: function(e, t, n) {
                var i, r, o = e.nodeType;
                return 3 !== o && 8 !== o && 2 !== o ? (1 === o && le.isXMLDoc(e) || (t = le.propFix[t] || t, r = le.propHooks[t]), void 0 !== n ? r && "set" in r && void 0 !== (i = r.set(e, n, t)) ? i: e[t] = n: r && "get" in r && null !== (i = r.get(e, t)) ? i: e[t]) : void 0
            },
            propHooks: {
                tabIndex: {
                    get: function(e) {
                        var t = le.find.attr(e, "tabindex");
                        return t ? parseInt(t, 10) : ht.test(e.nodeName) || gt.test(e.nodeName) && e.href ? 0 : -1
                    }
                }
            },
            propFix: {
                "for": "htmlFor",
                "class": "className"
            }
        }),
        se.optSelected || (le.propHooks.selected = {
            get: function(e) {
                var t = e.parentNode;
                return t && t.parentNode && t.parentNode.selectedIndex,
                null
            }
        }),
        le.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"],
        function() {
            le.propFix[this.toLowerCase()] = this
        });
        var mt = /[\t\r\n\f]/g;
        le.fn.extend({
            addClass: function(e) {
                var t, n, i, r, o, a, s, u = 0;
                if (le.isFunction(e)) return this.each(function(t) {
                    le(this).addClass(e.call(this, t, W(this)))
                });
                if ("string" == typeof e && e) for (t = e.match(Me) || []; n = this[u++];) if (r = W(n), i = 1 === n.nodeType && (" " + r + " ").replace(mt, " ")) {
                    for (a = 0; o = t[a++];) i.indexOf(" " + o + " ") < 0 && (i += o + " ");
                    s = le.trim(i),
                    r !== s && n.setAttribute("class", s)
                }
                return this
            },
            removeClass: function(e) {
                var t, n, i, r, o, a, s, u = 0;
                if (le.isFunction(e)) return this.each(function(t) {
                    le(this).removeClass(e.call(this, t, W(this)))
                });
                if (!arguments.length) return this.attr("class", "");
                if ("string" == typeof e && e) for (t = e.match(Me) || []; n = this[u++];) if (r = W(n), i = 1 === n.nodeType && (" " + r + " ").replace(mt, " ")) {
                    for (a = 0; o = t[a++];) for (; i.indexOf(" " + o + " ") > -1;) i = i.replace(" " + o + " ", " ");
                    s = le.trim(i),
                    r !== s && n.setAttribute("class", s)
                }
                return this
            },
            toggleClass: function(e, t) {
                var n = typeof e;
                return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : le.isFunction(e) ? this.each(function(n) {
                    le(this).toggleClass(e.call(this, n, W(this), t), t)
                }) : this.each(function() {
                    var t, i, r, o;
                    if ("string" === n) for (i = 0, r = le(this), o = e.match(Me) || []; t = o[i++];) r.hasClass(t) ? r.removeClass(t) : r.addClass(t);
                    else void 0 !== e && "boolean" !== n || (t = W(this), t && je.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || e === !1 ? "": je.get(this, "__className__") || ""))
                })
            },
            hasClass: function(e) {
                var t, n, i = 0;
                for (t = " " + e + " "; n = this[i++];) if (1 === n.nodeType && (" " + W(n) + " ").replace(mt, " ").indexOf(t) > -1) return ! 0;
                return ! 1
            }
        });
        var yt = /\r/g;
        le.fn.extend({
            val: function(e) {
                var t, n, i, r = this[0];
                return arguments.length ? (i = le.isFunction(e), this.each(function(n) {
                    var r;
                    1 === this.nodeType && (r = i ? e.call(this, n, le(this).val()) : e, null == r ? r = "": "number" == typeof r ? r += "": le.isArray(r) && (r = le.map(r,
                    function(e) {
                        return null == e ? "": e + ""
                    })), t = le.valHooks[this.type] || le.valHooks[this.nodeName.toLowerCase()], t && "set" in t && void 0 !== t.set(this, r, "value") || (this.value = r))
                })) : r ? (t = le.valHooks[r.type] || le.valHooks[r.nodeName.toLowerCase()], t && "get" in t && void 0 !== (n = t.get(r, "value")) ? n: (n = r.value, "string" == typeof n ? n.replace(yt, "") : null == n ? "": n)) : void 0
            }
        }),
        le.extend({
            valHooks: {
                option: {
                    get: function(e) {
                        return le.trim(e.value)
                    }
                },
                select: {
                    get: function(e) {
                        for (var t, n, i = e.options,
                        r = e.selectedIndex,
                        o = "select-one" === e.type || 0 > r,
                        a = o ? null: [], s = o ? r + 1 : i.length, u = 0 > r ? s: o ? r: 0; s > u; u++) if (n = i[u], (n.selected || u === r) && (se.optDisabled ? !n.disabled: null === n.getAttribute("disabled")) && (!n.parentNode.disabled || !le.nodeName(n.parentNode, "optgroup"))) {
                            if (t = le(n).val(), o) return t;
                            a.push(t)
                        }
                        return a
                    },
                    set: function(e, t) {
                        for (var n, i, r = e.options,
                        o = le.makeArray(t), a = r.length; a--;) i = r[a],
                        (i.selected = le.inArray(le.valHooks.option.get(i), o) > -1) && (n = !0);
                        return n || (e.selectedIndex = -1),
                        o
                    }
                }
            }
        }),
        le.each(["radio", "checkbox"],
        function() {
            le.valHooks[this] = {
                set: function(e, t) {
                    return le.isArray(t) ? e.checked = le.inArray(le(e).val(), t) > -1 : void 0
                }
            },
            se.checkOn || (le.valHooks[this].get = function(e) {
                return null === e.getAttribute("value") ? "on": e.value
            })
        });
        var vt = /^(?:focusinfocus|focusoutblur)$/;
        le.extend(le.event, {
            trigger: function(e, t, i, r) {
                var o, a, s, u, l, c, f, p = [i || Z],
                d = ae.call(e, "type") ? e.type: e,
                h = ae.call(e, "namespace") ? e.namespace.split(".") : [];
                if (a = s = i = i || Z, 3 !== i.nodeType && 8 !== i.nodeType && !vt.test(d + le.event.triggered) && (d.indexOf(".") > -1 && (h = d.split("."), d = h.shift(), h.sort()), l = d.indexOf(":") < 0 && "on" + d, e = e[le.expando] ? e: new le.Event(d, "object" == typeof e && e), e.isTrigger = r ? 2 : 3, e.namespace = h.join("."), e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, e.result = void 0, e.target || (e.target = i), t = null == t ? [e] : le.makeArray(t, [e]), f = le.event.special[d] || {},
                r || !f.trigger || f.trigger.apply(i, t) !== !1)) {
                    if (!r && !f.noBubble && !le.isWindow(i)) {
                        for (u = f.delegateType || d, vt.test(u + d) || (a = a.parentNode); a; a = a.parentNode) p.push(a),
                        s = a;
                        s === (i.ownerDocument || Z) && p.push(s.defaultView || s.parentWindow || n)
                    }
                    for (o = 0; (a = p[o++]) && !e.isPropagationStopped();) e.type = o > 1 ? u: f.bindType || d,
                    c = (je.get(a, "events") || {})[e.type] && je.get(a, "handle"),
                    c && c.apply(a, t),
                    c = l && a[l],
                    c && c.apply && Ee(a) && (e.result = c.apply(a, t), e.result === !1 && e.preventDefault());
                    return e.type = d,
                    r || e.isDefaultPrevented() || f._default && f._default.apply(p.pop(), t) !== !1 || !Ee(i) || l && le.isFunction(i[d]) && !le.isWindow(i) && (s = i[l], s && (i[l] = null), le.event.triggered = d, i[d](), le.event.triggered = void 0, s && (i[l] = s)),
                    e.result
                }
            },
            simulate: function(e, t, n) {
                var i = le.extend(new le.Event, n, {
                    type: e,
                    isSimulated: !0
                });
                le.event.trigger(i, null, t),
                i.isDefaultPrevented() && n.preventDefault()
            }
        }),
        le.fn.extend({
            trigger: function(e, t) {
                return this.each(function() {
                    le.event.trigger(e, t, this)
                })
            },
            triggerHandler: function(e, t) {
                var n = this[0];
                return n ? le.event.trigger(e, t, n, !0) : void 0
            }
        }),
        le.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),
        function(e, t) {
            le.fn[t] = function(e, n) {
                return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
            }
        }),
        le.fn.extend({
            hover: function(e, t) {
                return this.mouseenter(e).mouseleave(t || e)
            }
        }),
        se.focusin = "onfocusin" in n,
        se.focusin || le.each({
            focus: "focusin",
            blur: "focusout"
        },
        function(e, t) {
            var n = function(e) {
                le.event.simulate(t, e.target, le.event.fix(e))
            };
            le.event.special[t] = {
                setup: function() {
                    var i = this.ownerDocument || this,
                    r = je.access(i, t);
                    r || i.addEventListener(e, n, !0),
                    je.access(i, t, (r || 0) + 1)
                },
                teardown: function() {
                    var i = this.ownerDocument || this,
                    r = je.access(i, t) - 1;
                    r ? je.access(i, t, r) : (i.removeEventListener(e, n, !0), je.remove(i, t))
                }
            }
        });
        var xt = n.location,
        bt = le.now(),
        Ct = /\?/;
        le.parseJSON = function(e) {
            return JSON.parse(e + "")
        },
        le.parseXML = function(e) {
            var t;
            if (!e || "string" != typeof e) return null;
            try {
                t = (new n.DOMParser).parseFromString(e, "text/xml")
            } catch(i) {
                t = void 0
            }
            return t && !t.getElementsByTagName("parsererror").length || le.error("Invalid XML: " + e),
            t
        };
        var wt = /#.*$/,
        Tt = /([?&])_=[^&]*/,
        Rt = /^(.*?):[ \t]*([^\r\n]*)$/gm,
        Mt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
        Bt = /^(?:GET|HEAD)$/,
        kt = /^\/\//,
        Et = {},
        jt = {},
        Nt = "*/".concat("*"),
        St = Z.createElement("a");
        St.href = xt.href,
        le.extend({
            active: 0,
            lastModified: {},
            etag: {},
            ajaxSettings: {
                url: xt.href,
                type: "GET",
                isLocal: Mt.test(xt.protocol),
                global: !0,
                processData: !0,
                async: !0,
                contentType: "application/x-www-form-urlencoded; charset=UTF-8",
                accepts: {
                    "*": Nt,
                    text: "text/plain",
                    html: "text/html",
                    xml: "application/xml, text/xml",
                    json: "application/json, text/javascript"
                },
                contents: {
                    xml: /\bxml\b/,
                    html: /\bhtml/,
                    json: /\bjson\b/
                },
                responseFields: {
                    xml: "responseXML",
                    text: "responseText",
                    json: "responseJSON"
                },
                converters: {
                    "* text": String,
                    "text html": !0,
                    "text json": le.parseJSON,
                    "text xml": le.parseXML
                },
                flatOptions: {
                    url: !0,
                    context: !0
                }
            },
            ajaxSetup: function(e, t) {
                return t ? _(_(e, le.ajaxSettings), t) : _(le.ajaxSettings, e)
            },
            ajaxPrefilter: I(Et),
            ajaxTransport: I(jt),
            ajax: function(e, t) {
                function i(e, t, i, s) {
                    var l, f, v, x, C, T = t;
                    2 !== b && (b = 2, u && n.clearTimeout(u), r = void 0, a = s || "", w.readyState = e > 0 ? 4 : 0, l = e >= 200 && 300 > e || 304 === e, i && (x = X(p, w, i)), x = U(p, x, w, l), l ? (p.ifModified && (C = w.getResponseHeader("Last-Modified"), C && (le.lastModified[o] = C), C = w.getResponseHeader("etag"), C && (le.etag[o] = C)), 204 === e || "HEAD" === p.type ? T = "nocontent": 304 === e ? T = "notmodified": (T = x.state, f = x.data, v = x.error, l = !v)) : (v = T, !e && T || (T = "error", 0 > e && (e = 0))), w.status = e, w.statusText = (t || T) + "", l ? g.resolveWith(d, [f, T, w]) : g.rejectWith(d, [w, T, v]), w.statusCode(y), y = void 0, c && h.trigger(l ? "ajaxSuccess": "ajaxError", [w, p, l ? f: v]), m.fireWith(d, [w, T]), c && (h.trigger("ajaxComplete", [w, p]), --le.active || le.event.trigger("ajaxStop")))
                }
                "object" == typeof e && (t = e, e = void 0),
                t = t || {};
                var r, o, a, s, u, l, c, f, p = le.ajaxSetup({},
                t),
                d = p.context || p,
                h = p.context && (d.nodeType || d.jquery) ? le(d) : le.event,
                g = le.Deferred(),
                m = le.Callbacks("once memory"),
                y = p.statusCode || {},
                v = {},
                x = {},
                b = 0,
                C = "canceled",
                w = {
                    readyState: 0,
                    getResponseHeader: function(e) {
                        var t;
                        if (2 === b) {
                            if (!s) for (s = {}; t = Rt.exec(a);) s[t[1].toLowerCase()] = t[2];
                            t = s[e.toLowerCase()]
                        }
                        return null == t ? null: t
                    },
                    getAllResponseHeaders: function() {
                        return 2 === b ? a: null
                    },
                    setRequestHeader: function(e, t) {
                        var n = e.toLowerCase();
                        return b || (e = x[n] = x[n] || e, v[e] = t),
                        this
                    },
                    overrideMimeType: function(e) {
                        return b || (p.mimeType = e),
                        this
                    },
                    statusCode: function(e) {
                        var t;
                        if (e) if (2 > b) for (t in e) y[t] = [y[t], e[t]];
                        else w.always(e[w.status]);
                        return this
                    },
                    abort: function(e) {
                        var t = e || C;
                        return r && r.abort(t),
                        i(0, t),
                        this
                    }
                };
                if (g.promise(w).complete = m.add, w.success = w.done, w.error = w.fail, p.url = ((e || p.url || xt.href) + "").replace(wt, "").replace(kt, xt.protocol + "//"), p.type = t.method || t.type || p.method || p.type, p.dataTypes = le.trim(p.dataType || "*").toLowerCase().match(Me) || [""], null == p.crossDomain) {
                    l = Z.createElement("a");
                    try {
                        l.href = p.url,
                        l.href = l.href,
                        p.crossDomain = St.protocol + "//" + St.host != l.protocol + "//" + l.host
                    } catch(T) {
                        p.crossDomain = !0
                    }
                }
                if (p.data && p.processData && "string" != typeof p.data && (p.data = le.param(p.data, p.traditional)), $(Et, p, t, w), 2 === b) return w;
                c = le.event && p.global,
                c && 0 === le.active++&&le.event.trigger("ajaxStart"),
                p.type = p.type.toUpperCase(),
                p.hasContent = !Bt.test(p.type),
                o = p.url,
                p.hasContent || (p.data && (o = p.url += (Ct.test(o) ? "&": "?") + p.data, delete p.data), p.cache === !1 && (p.url = Tt.test(o) ? o.replace(Tt, "$1_=" + bt++) : o + (Ct.test(o) ? "&": "?") + "_=" + bt++)),
                p.ifModified && (le.lastModified[o] && w.setRequestHeader("If-Modified-Since", le.lastModified[o]), le.etag[o] && w.setRequestHeader("If-None-Match", le.etag[o])),
                (p.data && p.hasContent && p.contentType !== !1 || t.contentType) && w.setRequestHeader("Content-Type", p.contentType),
                w.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Nt + "; q=0.01": "") : p.accepts["*"]);
                for (f in p.headers) w.setRequestHeader(f, p.headers[f]);
                if (p.beforeSend && (p.beforeSend.call(d, w, p) === !1 || 2 === b)) return w.abort();
                C = "abort";
                for (f in {
                    success: 1,
                    error: 1,
                    complete: 1
                }) w[f](p[f]);
                if (r = $(jt, p, t, w)) {
                    if (w.readyState = 1, c && h.trigger("ajaxSend", [w, p]), 2 === b) return w;
                    p.async && p.timeout > 0 && (u = n.setTimeout(function() {
                        w.abort("timeout")
                    },
                    p.timeout));
                    try {
                        b = 1,
                        r.send(v, i)
                    } catch(T) {
                        if (! (2 > b)) throw T;
                        i( - 1, T)
                    }
                } else i( - 1, "No Transport");
                return w
            },
            getJSON: function(e, t, n) {
                return le.get(e, t, n, "json")
            },
            getScript: function(e, t) {
                return le.get(e, void 0, t, "script")
            }
        }),
        le.each(["get", "post"],
        function(e, t) {
            le[t] = function(e, n, i, r) {
                return le.isFunction(n) && (r = r || i, i = n, n = void 0),
                le.ajax(le.extend({
                    url: e,
                    type: t,
                    dataType: r,
                    data: n,
                    success: i
                },
                le.isPlainObject(e) && e))
            }
        }),
        le._evalUrl = function(e) {
            return le.ajax({
                url: e,
                type: "GET",
                dataType: "script",
                async: !1,
                global: !1,
                "throws": !0
            })
        },
        le.fn.extend({
            wrapAll: function(e) {
                var t;
                return le.isFunction(e) ? this.each(function(t) {
                    le(this).wrapAll(e.call(this, t))
                }) : (this[0] && (t = le(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
                    for (var e = this; e.firstElementChild;) e = e.firstElementChild;
                    return e
                }).append(this)), this)
            },
            wrapInner: function(e) {
                return le.isFunction(e) ? this.each(function(t) {
                    le(this).wrapInner(e.call(this, t))
                }) : this.each(function() {
                    var t = le(this),
                    n = t.contents();
                    n.length ? n.wrapAll(e) : t.append(e)
                })
            },
            wrap: function(e) {
                var t = le.isFunction(e);
                return this.each(function(n) {
                    le(this).wrapAll(t ? e.call(this, n) : e)
                })
            },
            unwrap: function() {
                return this.parent().each(function() {
                    le.nodeName(this, "body") || le(this).replaceWith(this.childNodes)
                }).end()
            }
        }),
        le.expr.filters.hidden = function(e) {
            return ! le.expr.filters.visible(e)
        },
        le.expr.filters.visible = function(e) {
            return e.offsetWidth > 0 || e.offsetHeight > 0 || e.getClientRects().length > 0
        };
        var Dt = /%20/g,
        Yt = /\[\]$/,
        Gt = /\r?\n/g,
        qt = /^(?:submit|button|image|reset|file)$/i,
        At = /^(?:input|select|textarea|keygen)/i;
        le.param = function(e, t) {
            var n, i = [],
            r = function(e, t) {
                t = le.isFunction(t) ? t() : null == t ? "": t,
                i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
            };
            if (void 0 === t && (t = le.ajaxSettings && le.ajaxSettings.traditional), le.isArray(e) || e.jquery && !le.isPlainObject(e)) le.each(e,
            function() {
                r(this.name, this.value)
            });
            else for (n in e) V(n, e[n], t, r);
            return i.join("&").replace(Dt, "+")
        },
        le.fn.extend({
            serialize: function() {
                return le.param(this.serializeArray())
            },
            serializeArray: function() {
                return this.map(function() {
                    var e = le.prop(this, "elements");
                    return e ? le.makeArray(e) : this
                }).filter(function() {
                    var e = this.type;
                    return this.name && !le(this).is(":disabled") && At.test(this.nodeName) && !qt.test(e) && (this.checked || !Ke.test(e))
                }).map(function(e, t) {
                    var n = le(this).val();
                    return null == n ? null: le.isArray(n) ? le.map(n,
                    function(e) {
                        return {
                            name: t.name,
                            value: e.replace(Gt, "\r\n")
                        }
                    }) : {
                        name: t.name,
                        value: n.replace(Gt, "\r\n")
                    }
                }).get()
            }
        }),
        le.ajaxSettings.xhr = function() {
            try {
                return new n.XMLHttpRequest
            } catch(e) {}
        };
        var Kt = {
            0 : 200,
            1223 : 204
        },
        Lt = le.ajaxSettings.xhr();
        se.cors = !!Lt && "withCredentials" in Lt,
        se.ajax = Lt = !!Lt,
        le.ajaxTransport(function(e) {
            var t, i;
            return se.cors || Lt && !e.crossDomain ? {
                send: function(r, o) {
                    var a, s = e.xhr();
                    if (s.open(e.type, e.url, e.async, e.username, e.password), e.xhrFields) for (a in e.xhrFields) s[a] = e.xhrFields[a];
                    e.mimeType && s.overrideMimeType && s.overrideMimeType(e.mimeType),
                    e.crossDomain || r["X-Requested-With"] || (r["X-Requested-With"] = "XMLHttpRequest");
                    for (a in r) s.setRequestHeader(a, r[a]);
                    t = function(e) {
                        return function() {
                            t && (t = i = s.onload = s.onerror = s.onabort = s.onreadystatechange = null, "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Kt[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
                                binary: s.response
                            }: {
                                text: s.responseText
                            },
                            s.getAllResponseHeaders()))
                        }
                    },
                    s.onload = t(),
                    i = s.onerror = t("error"),
                    void 0 !== s.onabort ? s.onabort = i: s.onreadystatechange = function() {
                        4 === s.readyState && n.setTimeout(function() {
                            t && i()
                        })
                    },
                    t = t("abort");
                    try {
                        s.send(e.hasContent && e.data || null)
                    } catch(u) {
                        if (t) throw u
                    }
                },
                abort: function() {
                    t && t()
                }
            }: void 0
        }),
        le.ajaxSetup({
            accepts: {
                script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
            },
            contents: {
                script: /\b(?:java|ecma)script\b/
            },
            converters: {
                "text script": function(e) {
                    return le.globalEval(e),
                    e
                }
            }
        }),
        le.ajaxPrefilter("script",
        function(e) {
            void 0 === e.cache && (e.cache = !1),
            e.crossDomain && (e.type = "GET")
        }),
        le.ajaxTransport("script",
        function(e) {
            if (e.crossDomain) {
                var t, n;
                return {
                    send: function(i, r) {
                        t = le("<script>").prop({
                            charset: e.scriptCharset,
                            src: e.url
                        }).on("load error", n = function(e) {
                            t.remove(),
                            n = null,
                            e && r("error" === e.type ? 404 : 200, e.type)
                        }),
                        Z.head.appendChild(t[0])
                    },
                    abort: function() {
                        n && n()
                    }
                }
            }
        });
        var Ht = [],
        Ot = /(=)\?(?=&|$)|\?\?/;
        le.ajaxSetup({
            jsonp: "callback",
            jsonpCallback: function() {
                var e = Ht.pop() || le.expando + "_" + bt++;
                return this[e] = !0,
                e
            }
        }),
        le.ajaxPrefilter("json jsonp",
        function(e, t, i) {
            var r, o, a, s = e.jsonp !== !1 && (Ot.test(e.url) ? "url": "string" == typeof e.data && 0 === (e.contentType || "").indexOf("application/x-www-form-urlencoded") && Ot.test(e.data) && "data");
            return s || "jsonp" === e.dataTypes[0] ? (r = e.jsonpCallback = le.isFunction(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback, s ? e[s] = e[s].replace(Ot, "$1" + r) : e.jsonp !== !1 && (e.url += (Ct.test(e.url) ? "&": "?") + e.jsonp + "=" + r), e.converters["script json"] = function() {
                return a || le.error(r + " was not called"),
                a[0]
            },
            e.dataTypes[0] = "json", o = n[r], n[r] = function() {
                a = arguments
            },
            i.always(function() {
                void 0 === o ? le(n).removeProp(r) : n[r] = o,
                e[r] && (e.jsonpCallback = t.jsonpCallback, Ht.push(r)),
                a && le.isFunction(o) && o(a[0]),
                a = o = void 0
            }), "script") : void 0
        }),
        se.createHTMLDocument = function() {
            var e = Z.implementation.createHTMLDocument("").body;
            return e.innerHTML = "<form></form><form></form>",
            2 === e.childNodes.length
        } (),
        le.parseHTML = function(e, t, n) {
            if (!e || "string" != typeof e) return null;
            "boolean" == typeof t && (n = t, t = !1),
            t = t || (se.createHTMLDocument ? Z.implementation.createHTMLDocument("") : Z);
            var i = ve.exec(e),
            r = !n && [];
            return i ? [t.createElement(i[1])] : (i = m([e], t, r), r && r.length && le(r).remove(), le.merge([], i.childNodes))
        };
        var Ft = le.fn.load;
        le.fn.load = function(e, t, n) {
            if ("string" != typeof e && Ft) return Ft.apply(this, arguments);
            var i, r, o, a = this,
            s = e.indexOf(" ");
            return s > -1 && (i = le.trim(e.slice(s)), e = e.slice(0, s)),
            le.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (r = "POST"),
            a.length > 0 && le.ajax({
                url: e,
                type: r || "GET",
                dataType: "html",
                data: t
            }).done(function(e) {
                o = arguments,
                a.html(i ? le("<div>").append(le.parseHTML(e)).find(i) : e)
            }).always(n &&
            function(e, t) {
                a.each(function() {
                    n.apply(a, o || [e.responseText, t, e])
                })
            }),
            this
        },
        le.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"],
        function(e, t) {
            le.fn[t] = function(e) {
                return this.on(t, e)
            }
        }),
        le.expr.filters.animated = function(e) {
            return le.grep(le.timers,
            function(t) {
                return e === t.elem
            }).length
        },
        le.offset = {
            setOffset: function(e, t, n) {
                var i, r, o, a, s, u, l, c = le.css(e, "position"),
                f = le(e),
                p = {};
                "static" === c && (e.style.position = "relative"),
                s = f.offset(),
                o = le.css(e, "top"),
                u = le.css(e, "left"),
                l = ("absolute" === c || "fixed" === c) && (o + u).indexOf("auto") > -1,
                l ? (i = f.position(), a = i.top, r = i.left) : (a = parseFloat(o) || 0, r = parseFloat(u) || 0),
                le.isFunction(t) && (t = t.call(e, n, le.extend({},
                s))),
                null != t.top && (p.top = t.top - s.top + a),
                null != t.left && (p.left = t.left - s.left + r),
                "using" in t ? t.using.call(e, p) : f.css(p)
            }
        },
        le.fn.extend({
            offset: function(e) {
                if (arguments.length) return void 0 === e ? this: this.each(function(t) {
                    le.offset.setOffset(this, e, t)
                });
                var t, n, i = this[0],
                r = {
                    top: 0,
                    left: 0
                },
                o = i && i.ownerDocument;
                return o ? (t = o.documentElement, le.contains(t, i) ? (r = i.getBoundingClientRect(), n = J(o), {
                    top: r.top + n.pageYOffset - t.clientTop,
                    left: r.left + n.pageXOffset - t.clientLeft
                }) : r) : void 0
            },
            position: function() {
                if (this[0]) {
                    var e, t, n = this[0],
                    i = {
                        top: 0,
                        left: 0
                    };
                    return "fixed" === le.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), le.nodeName(e[0], "html") || (i = e.offset()), i.top += le.css(e[0], "borderTopWidth", !0), i.left += le.css(e[0], "borderLeftWidth", !0)),
                    {
                        top: t.top - i.top - le.css(n, "marginTop", !0),
                        left: t.left - i.left - le.css(n, "marginLeft", !0)
                    }
                }
            },
            offsetParent: function() {
                return this.map(function() {
                    for (var e = this.offsetParent; e && "static" === le.css(e, "position");) e = e.offsetParent;
                    return e || nt
                })
            }
        }),
        le.each({
            scrollLeft: "pageXOffset",
            scrollTop: "pageYOffset"
        },
        function(e, t) {
            var n = "pageYOffset" === t;
            le.fn[e] = function(i) {
                return ke(this,
                function(e, i, r) {
                    var o = J(e);
                    return void 0 === r ? o ? o[t] : e[i] : void(o ? o.scrollTo(n ? o.pageXOffset: r, n ? r: o.pageYOffset) : e[i] = r)
                },
                e, i, arguments.length)
            }
        }),
        le.each(["top", "left"],
        function(e, t) {
            le.cssHooks[t] = S(se.pixelPosition,
            function(e, n) {
                return n ? (n = N(e, t), Ze.test(n) ? le(e).position()[t] + "px": n) : void 0
            })
        }),
        le.each({
            Height: "height",
            Width: "width"
        },
        function(e, t) {
            le.each({
                padding: "inner" + e,
                content: t,
                "": "outer" + e
            },
            function(n, i) {
                le.fn[i] = function(i, r) {
                    var o = arguments.length && (n || "boolean" != typeof i),
                    a = n || (i === !0 || r === !0 ? "margin": "border");
                    return ke(this,
                    function(t, n, i) {
                        var r;
                        return le.isWindow(t) ? t.document.documentElement["client" + e] : 9 === t.nodeType ? (r = t.documentElement, Math.max(t.body["scroll" + e], r["scroll" + e], t.body["offset" + e], r["offset" + e], r["client" + e])) : void 0 === i ? le.css(t, n, a) : le.style(t, n, i, a)
                    },
                    t, o ? i: void 0, o, null)
                }
            })
        }),
        le.fn.extend({
            bind: function(e, t, n) {
                return this.on(e, null, t, n)
            },
            unbind: function(e, t) {
                return this.off(e, null, t)
            },
            delegate: function(e, t, n, i) {
                return this.on(t, e, n, i)
            },
            undelegate: function(e, t, n) {
                return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
            },
            size: function() {
                return this.length
            }
        }),
        le.fn.andSelf = le.fn.addBack,
        i = [],
        r = function() {
            return le
        }.apply(t, i),
        !(void 0 !== r && (e.exports = r));
        var Pt = n.jQuery,
        zt = n.$;
        return le.noConflict = function(e) {
            return n.$ === le && (n.$ = zt),
            e && n.jQuery === le && (n.jQuery = Pt),
            le
        },
        o || (n.jQuery = n.$ = le),
        le
    })
}]);